Skip to content

Repository files navigation

Nevu Desktop

A modern desktop application for Nevu, the alternative UI for Plex.

Features

  • Cross-platform: Available for Windows, macOS, and Linux
  • Auto-discovery: Automatically finds Nevu servers on your network using UDP discovery
  • Custom window controls: Native-feeling window management
  • Hardware acceleration: Optional GPU acceleration for better performance
  • Auto-updates: Automatic updates when new versions are released
  • Settings management: Easy configuration of server URL and preferences
  • Dark mode: Modern, minimalistic dark interface

Installation

From Releases

Download the latest release for your platform:

  • Windows: Nevu-Setup-vX.X.X-Windows.exe (installer) or Nevu-vX.X.X-Windows-Portable.exe (portable)
  • macOS: Nevu-vX.X.X-macOS.dmg (disk image) or Nevu-vX.X.X-macOS.zip (ZIP archive)
  • Linux: Nevu-vX.X.X-Linux.AppImage (AppImage), Nevu-vX.X.X-Linux.deb (Debian), or Nevu-vX.X.X-Linux.rpm (Red Hat)

From Source

  1. Clone this repository:

    git clone https://github.com/YourUsername/nevu-desktop.git
    cd nevu-desktop
  2. Install dependencies:

    npm install
  3. Start in development mode:

    npm run dev
  4. Build for your platform:

    npm run build

Usage

First Launch

When you first launch Nevu Desktop, you'll be presented with a setup screen where you can:

  1. Enter a manual server URL: If you know the URL of your Nevu server (e.g., http://localhost:3000)
  2. Select from discovered servers: The app automatically discovers Nevu servers on your network

Settings

Access settings through the app menu (macOS) or by calling window.nevuDesktop.openSettings() from the Nevu web interface.

Settings include:

  • Server URL: Change the Nevu server you're connected to
  • Hardware Acceleration: Enable/disable GPU acceleration

API for Nevu Web Interface

The desktop app exposes a nevuDesktop API that the Nevu web interface can use:

// Check if running in desktop app
if (window.nevuDesktop) {
  // Get platform information
  const platform = await window.nevuDesktop.getPlatform();
  console.log('Running on:', platform.platform);
  
  // Open settings
  window.nevuDesktop.openSettings();
  
  // Get app version
  const version = await window.nevuDesktop.getVersion();
}

Development

Prerequisites

  • Node.js 18 or later
  • npm or yarn

Building

# Install dependencies
npm install

# Generate icons (requires ImageMagick or uses placeholders)
npm run generate-icons

# Build for all platforms
npm run build

# Build for specific platforms
npm run build:win    # Windows
npm run build:mac    # macOS
npm run build:linux  # Linux

Project Structure

nevu-desktop/
├── src/
│   ├── main.js       # Main Electron process
│   ├── preload.js    # Preload script for security
│   ├── setup.html    # Initial setup page
│   └── settings.html # Settings window
├── assets/
│   ├── icon.svg      # Source icon
│   ├── icon.ico      # Windows icon
│   ├── icon.icns     # macOS icon
│   └── icon.png      # Linux icon
├── scripts/
│   └── generate-icons.js # Icon generation script
└── .github/workflows/
    └── build.yml     # GitHub Actions build workflow

Server Discovery

The app uses UDP discovery to find Nevu servers on your network. Servers are discovered when they announce themselves with the name "Nevu".

For a Nevu server to be discoverable, it should announce itself using udp-discovery:

const Discovery = require('udp-discovery').Discovery;
const discovery = new Discovery();

discovery.announce("Nevu", {
  port: parseInt(process.env.PORT || '3000'),
  type: 'nevu',
  protocol: 'tcp',
  txt: {
    deploymentID,
    version: '1.0.0',
    plexServer: process.env.PLEX_SERVER,
  }
}, 500, true);

Building and Releases

This project uses GitHub Actions to automatically build and release the application when a new tag is pushed:

  1. Create a new tag: git tag v1.0.0
  2. Push the tag: git push origin v1.0.0
  3. GitHub Actions will build for all platforms and create a release

License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

Support

For issues related to Nevu Desktop, please open an issue on this repository. For issues related to the Nevu server itself, please visit the main Nevu repository.

About

Desktop App for Nevu

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages