# QBZ (Slint) — Snap recipe that PACKAGES A PRE-BUILT BINARY (plugin: dump). # # This is NOT the Tauri snapcraft.yaml (../../snapcraft.yaml). That one builds # from source (plugin: rust + npm tauri build, webkit2gtk). This one takes a # qbz binary ALREADY built (e.g. on a 16 GB hosted runner with swap, or the # self-hosted box) and just wraps it into a .snap — NO compilation here, so it # runs in seconds on any runner that has snapd (the dev box does not need it). # # The CI job (release-snap.yml) stages the binary + .desktop + icon under # ./snap-payload/ and substitutes `version:` from the release tag, then runs # `snapcraft` (which lives on the hosted Ubuntu runner) + snapcore/action-publish. # # UNTESTED runtime confinement: the Slint app uses femtovg-wgpu (Vulkan/GL) + # winit (Wayland/X11), NOT GTK/webkit. The stage-packages + plugs below are a # best-effort first cut; the FIRST real `snapcraft` build + `snap run` on the # runner will surface any missing lib / interface (I can't test snapd locally). 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. This is the native (Slint) build: a single self-contained binary, no web runtime. Features: native Qobuz(TM) streaming, bit-perfect ALSA exclusive mode, DAC passthrough, Hi-Res FLAC, queue/playlists/favorites/offline cache, local library, 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: # arm64 is a separate job (needs an arm64 binary + runner); add later. # 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. Restored from the 1.2.x recipe (review fix 2026-07-03). 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: bin/qbz desktop: usr/share/applications/qbz.desktop # The gnome extension provides the graphics/font platform (Mesa GL, EGL, # fontconfig, wayland) that a femtovg-wgpu + winit app needs — it is NOT # about GTK here, just the runtime platform. It wires desktop/wayland/x11/ # gsettings plugs automatically. 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 the prebuilt binary + desktop + icon here: source: ./snap-payload organize: qbz: bin/qbz qbz.desktop: usr/share/applications/qbz.desktop qbz.png: usr/share/icons/hicolor/256x256/apps/qbz.png stage-packages: # Audio (the bit-perfect path) - libasound2t64 - libasound2-plugins - libpipewire-0.3-0 - libjack-jackd2-0 # TLS / HTTP - libssl3t64 # GPU stack for femtovg-wgpu (Vulkan first, GL fallback). The gnome # extension ships Mesa GL; add the Vulkan ICD + loader explicitly since # wgpu prefers Vulkan and the platform may not expose the ICD. - libvulkan1 - mesa-vulkan-drivers - libegl1 - libgl1 # winit windowing (Wayland + X11) - libwayland-client0 - libwayland-cursor0 - libwayland-egl1 - libxkbcommon0 - libxcb1 - libx11-6 - libxcursor1 - libxi6 - libxrandr2 # Fonts / text shaping (femtovg) - libfontconfig1 - libfreetype6 # Tray (ksni) + portals + media controls over D-Bus - libdbus-1-3