Files
qbz/packaging/snap-qt/snapcraft-arm64.yaml
T
vicrodh 4bb4982312 feat(sacd): support raw and DST-compressed ISO playback
Parse resilient SACD images, decode DST, scan ISO releases into the local library, and keep explicit opens ephemeral.

Ship decoder notices across distribution formats and align DSD album filtering and version selection.

cx
2026-09-05 10:00:24 -06:00

113 lines
4.1 KiB
YAML

# QBZ (Qt) — arm64 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.yaml (amd64) 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:
arm64:
# 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/aarch64-linux-gnu/alsa-lib:
bind: $SNAP/usr/lib/aarch64-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
LICENSE: usr/share/licenses/qbz/LICENSE
licenses: usr/share/licenses/qbz/third-party
# Runtime the AppDir does NOT carry. The AppDir contains Qt/QML, D-Bus and
# the non-system xcb/Wayland helpers selected by linuxdeploy; the GNOME
# extension supplies the host graphics, display and font stack. Keep this
# list to the audio helpers QBZ opens by name.
stage-packages:
# Audio (the bit-perfect path)
- libasound2t64
- libasound2-plugins
# Keep the runtime tools used by PipeWireBackend in both architectures.
# They expose host sinks (including Bluetooth) and permit explicit sink
# routing inside the connected strict Snap sandbox (#703).
- pipewire-bin
- pulseaudio-utils
- libjack-jackd2-0