This is a hard fork of Nuvio Desktop, maintained as a standalone repository and focused exclusively on Linux. The macOS and Windows code paths have been removed. If you need those platforms, use the upstream project instead.
Nuvio Linux is currently in alpha and is intended only for testers. It is under active development and is not suitable for daily use.
Expect breaking changes with every update. Features, settings, stored data, and compatibility may change or stop working without notice. Do not rely on this build as your primary media app, and report any issues you encounter during testing.
Nuvio Linux is a media client for browsing metadata, managing collections and watch progress, downloading media, and playing streams from user-installed extensions or user-provided sources.
This fork is a hard fork of NuvioMedia/NuvioDesktop (standalone repository, from the feat/hwaccel-libmpv-linux work). It keeps the upstream client codebase — including feature ports from newer upstream releases — while replacing the desktop playback stack with a native Linux player.
- Native Linux playback via MPV (libmpv). The old embedded player is replaced by a C++/JNI bridge that embeds mpv using its render API, drawing video straight into the Compose scene — all overlay UI works on X11 and Wayland. The app itself runs under XWayland; the embedded player is display-agnostic (offscreen EGL) and works on both backends.
- Hardware acceleration. Zero-copy decode via VA-API (Mesa/AMD/Intel) and NVDEC (NVIDIA), chosen automatically by the app's decoder setting, with a software fallback.
- HDR support. The embedded player loads your
mpv.confwholesale, so HDR/color configuration — tone-mapping,target-peak, inverse-tone-mapping, profiles — applies as-is. - Discord Rich Presence. Show what you're watching or browsing on your Discord profile. Configurable under Settings → Integrations → Discord Rich Presence.
- Trakt & Simkl tracking. Connect your Trakt or Simkl account under Settings → Integrations → Tracking — library, watch progress, watched history and scrobbling sync across your devices, with a "Sync now" button and automatic refresh.
- Arch Linux distribution. A first-class Arch package with a bundled JRE (no system Java required), including a launcher and desktop entry.
- Fedora/RPM, AppImage, and Flatpak packages. Release artifacts for Fedora/RHEL (
dnf), a portable AppImage, and a sandboxed Flatpak — all compiled for generic x86-64.
Install the .rpm from a release (requires system mpv):
sudo dnf install ./nuvio-linux-*.x86_64.rpmDownload nuvio-linux-*-x86_64.AppImage from a release, then:
chmod +x nuvio-linux-*.AppImage
./nuvio-linux-*.AppImageRequires system mpv and libfuse2 (or run with --appimage-extract-and-run on FUSE-less systems).
Download nuvio-linux-*.flatpak from a release, then:
flatpak install --user ./nuvio-linux-*.flatpak
flatpak run io.github.jjdizz1l.NuvioLinuxThe Flatpak bundles libmpv built from source — no system mpv needed. Your
~/.config/mpv/mpv.conf is honored read-only. P2P/TorrServer works via the
bundled binary. Updates are delivered through the bundle (the in-app updater
is disabled in the sandbox).
Prebuilt packages are attached to each release. The package is self-contained (bundled JRE, no system Java required), installs to /opt/nuvio-linux, and is compiled for generic x86-64 — it runs on any x86-64 CPU (no AVX2/AVX-512 requirement).
Release packages are signed. Trust the release key once (fetches from a keyserver):
sudo pacman-key --recv-key 6702DBAB3E41EDE1 && sudo pacman-key --lsign-key 6702DBAB3E41EDE1(Or download nuvio-linux-gpg-key.asc from the release and run
sudo pacman-key --add nuvio-linux-gpg-key.asc && sudo pacman-key --lsign-key 6702DBAB3E41EDE1.)
sudo pacman -U https://github.com/JJDizz1L/NuvioLinux/releases/download/v0.1.17-alpha/nuvio-linux-0.1.17alpha-2-x86_64.pkg.tar.zstDownload the .pkg.tar.zst from the latest release, then install it:
sudo pacman -U ./nuvio-linux-0.1.17alpha-2-x86_64.pkg.tar.zstgit clone -b dev https://github.com/JJDizz1L/NuvioLinux.git
cd NuvioLinux/dist/arch
makepkg -siTo keep the bundled JRE portable, build with a baseline x86-64 JDK (e.g. Eclipse Temurin 21) — distro JDKs compiled with
-march=native/-march=x86-64-v3/v4(e.g. CachyOS) produce a runtime that only runs on those CPUs. PointJAVA_HOMEat a generic JDK before runningmakepkg.
Launch it from your app menu, or from a terminal:
nuvio-linuxThis fork does not produce Windows or macOS builds.
git clone -b dev https://github.com/JJDizz1L/NuvioLinux.git
cd NuvioLinuxRun from source:
./gradlew runBuild a release package for the current host:
./gradlew :composeApp:packageReleaseDistributionForCurrentOSLinux packaging:
Build a Debian .deb package for Debian-based distros (Debian, Ubuntu, and derivatives):
./gradlew :composeApp:packageReleaseDebThe resulting .deb is written to composeApp/build/compose/binaries/main-release/deb/. Install it with:
sudo apt install ./composeApp/build/compose/binaries/main-release/deb/*.debBuild a Fedora/RHEL .rpm (declares Requires: mpv; needs rpmbuild):
./dist/rpm/build-rpm.shBuild a portable .AppImage (needs appimagetool; uses system mpv):
./dist/appimage/build-appimage.shBuild a Flatpak bundle (io.github.jjdizz1l.NuvioLinux; builds libmpv + deps
from source inside the sandbox for baseline x86-64 portability):
./dist/flatpak/build-flatpak.shNote: this fork's primary Linux distribution is the Arch Linux package (self-contained, bundled JRE). All Linux packages require a native
mpvinstallation at runtime — except the Flatpak, which bundles libmpv built from source. All artifacts are attached to each release.
Tiling compositors don't wrap windows in a WM-managed frame the way AWT
expects, which can make the app render into a small box in the corner of the
window. The app detects non-reparenting window managers and enables the JDK's
workaround (_JAVA_AWT_WM_NONREPARENTING=1) automatically — no action needed.
If a tiling WM is not detected automatically (or you want to override the detection), set the variable yourself before launching:
_JAVA_AWT_WM_NONREPARENTING=1 nuvio-linuxOn NixOS the AppImage is typically run through steam-run, whose bundled
graphics libraries can shadow your real GPU driver, silently falling back to
software rendering (stutter). Point the loader at the system's actual OpenGL
libraries first:
LD_LIBRARY_PATH=/run/opengl-driver/lib:$LD_LIBRARY_PATH ./nuvio-linux-<version>-x86_64.AppImage(/run/opengl-driver/lib hosts the NixOS libGL/GLX driver environment; adjust
the path if your setup differs.) This is an environment/library-loading issue,
not an app bug — on standard distros the AppImage resolves the GPU driver
normally.
composeApp/contains the app code.composeApp/src/commonMain/contains shared UI, features, repositories, and platform-agnostic logic.composeApp/src/desktopMain/contains desktop-specific integrations.composeApp/src/desktopMain/native/contains the C++/libmpv playback bridge.dist/arch/,dist/rpm/,dist/appimage/,dist/flatpak/contain the per-distribution packaging scripts.composeApp/Configuration/DesktopVersion.propertiescontains the desktop release version and build code.
Desktop versions are set in composeApp/Configuration/DesktopVersion.properties — the single source of truth every artifact version derives from. The version is kept aligned with upstream's desktop version; when upstream bumps, bump to match.
VERSION_NAME=0.1.17-alpha
VERSION_CODE=17Use the version helper when changing desktop release versions:
./scripts/set-version.sh --desktop 0.1.17-alpha --desktop-code 17
./scripts/set-version.sh --showPer-format package names carry the same release counter (Arch pkgrel / RPM Release / the -<release> suffix in DEB, AppImage and Flatpak names), e.g. release 2 of 0.1.17-alpha:
nuvio-linux-0.1.17alpha-2-x86_64.pkg.tar.zst
nuvio-linux-0.1.17alpha-2.x86_64.rpm
nuvio-linux_0.1.17-alpha-2_amd64.deb
nuvio-linux-0.1.17-alpha-2-x86_64.AppImage
nuvio-linux-0.1.17-alpha-2.flatpak
Nuvio Linux functions solely as a client-side interface for browsing metadata and playing media provided by user-installed extensions and/or user-provided sources. It is intended for content the user owns or is otherwise authorized to access.
Nuvio Linux is not affiliated with any third-party extensions, catalogs, sources, or content providers. It does not host, store, or distribute any media content.
For comprehensive legal information, including our full disclaimer, third-party extension policy, and DMCA/Copyright information, please visit our Legal & Disclaimer Page.
- Kotlin Multiplatform
- Compose Multiplatform
- Kotlin
- Compose Desktop packaging
- Native desktop player integrations
- libmpv (MPV render API) via a C++/JNI bridge
- Discord IPC (Rich Presence)
