# QBZ (Qt) — Snap recipe that PACKAGES THE PRE-BUILT AppDir (plugin: dump). # # release-snap.yml gets the self-contained AppDir from build-qt-linux.yml # (the qbz binary + the Qt libraries + platform/QML plugins + qt.conf), stages # it under ./snap-payload/ with the .desktop and icon, stamps `version:` from # the tag, and runs `snapcraft` — NO compilation here. # # WHY THE AppDir AND NOT THE BARE BINARY (2026-08-25): the tree needs Qt >= 6.8 # and core24 = Ubuntu 24.04 = Qt 6.4.2 without QtQuick.Effects, so neither # stage-packages nor a source build (the old root snapcraft.yaml, deleted) can # provide Qt. The gnome extension stays for the desktop platform plugs and the # GL/Wayland runtime; Qt itself rides in $SNAP/opt/qbz. qt.conf (Prefix=../) # and the $ORIGIN RPATH make that tree relocatable with no env. # # snapcraft-arm64.yaml is this file with platforms/alsa-lib paths swapped. name: qbz-player # keep the existing registered Snap Store name title: "QBZ — Native Qobuz Client for Linux" version: '0.0.0' # OVERWRITTEN by release-snap.yml from the tag (sed) summary: Native Qobuz player for Linux with bit-perfect audio and DAC control description: | QBZ is a native Linux desktop client for Qobuz(TM), built for high-fidelity playback with a native audio pipeline (direct ALSA and PipeWire), bit-perfect output, exclusive device access, and per-track sample-rate switching for external DACs — up to 24-bit / 192 kHz. A single native process with a Qt/QML interface, no web runtime. Features: native Qobuz(TM) streaming, bit-perfect ALSA exclusive mode, DAC passthrough, Hi-Res FLAC, DSD, CD/SACD playback, queue/playlists/favorites/offline cache, local library plus Plex, Jellyfin and Subsonic servers, Chromecast and DLNA, MPRIS media keys and desktop integration. QBZ uses the Qobuz(TM) API but is not affiliated with, endorsed by, or certified by Qobuz. license: MIT contact: https://github.com/vicrodh/qbz/discussions website: https://qbz.lol source-code: https://github.com/vicrodh/qbz issues: https://github.com/vicrodh/qbz/issues grade: stable confinement: strict base: core24 icon: packaging/snap/snap/gui/qbz.png platforms: amd64: # ALSA config/plugin binds: without these the snap's alsa-lib cannot find the # host's ALSA configuration and plugin set, and the direct hw: (bit-perfect) # path breaks. layout: /usr/share/alsa: bind: $SNAP/usr/share/alsa /etc/alsa: bind: $SNAP/etc/alsa /usr/lib/x86_64-linux-gnu/alsa-lib: bind: $SNAP/usr/lib/x86_64-linux-gnu/alsa-lib apps: qbz: command: opt/qbz/bin/qbz desktop: usr/share/applications/qbz.desktop # The gnome extension provides the graphics platform (Mesa GL, EGL, # wayland, fontconfig) and wires desktop/wayland/x11/gsettings plugs. extensions: [gnome] plugs: - network - network-status - audio-playback - home - removable-media - alsa - pipewire - opengl slots: - mpris slots: mpris: interface: mpris name: qbz parts: qbz: plugin: dump # release-snap.yml writes AppDir/usr/{bin,lib,plugins,qml} + desktop + icon here: source: ./snap-payload organize: bin: opt/qbz/bin lib: opt/qbz/lib plugins: opt/qbz/plugins qml: opt/qbz/qml qbz.desktop: usr/share/applications/qbz.desktop qbz.png: usr/share/icons/hicolor/256x256/apps/qbz.png # Runtime the AppDir does NOT carry (linuxdeploy's blacklist). stage-packages: # Audio (the bit-perfect path) - libasound2t64 - libasound2-plugins - libpipewire-0.3-0 # The backend invokes these at runtime: pw-dump discovers the host sinks # (including Bluetooth) and pw-metadata/pactl select and inspect them. # Without the binaries the strict Snap sees only the generic CPAL bridge # even when the pipewire plug is connected (#703). - pipewire-bin - pulseaudio-utils - libjack-jackd2-0 # TLS / HTTP - libssl3t64 # Qt's xcb + wayland platform plugins - libxkbcommon0 - libxkbcommon-x11-0 - libxcb1 - libxcb-cursor0 - libxcb-icccm4 - libxcb-image0 - libxcb-keysyms1 - libxcb-render-util0 - libxcb-shape0 - libxcb-xkb1 - libxcb-randr0 - libxcb-sync1 - libxcb-xfixes0 - libxcb-glx0 - libx11-6 - libwayland-client0 - libwayland-cursor0 - libwayland-egl1 - libegl1 - libgl1 # Fonts - libfontconfig1 - libfreetype6 # Tray + portals + media controls over D-Bus - libdbus-1-3