137 lines
4.5 KiB
YAML
137 lines
4.5 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
|
|
# Runtime the AppDir does NOT carry (linuxdeploy's blacklist).
|
|
stage-packages:
|
|
# Audio (the bit-perfect path)
|
|
- libasound2t64
|
|
- libasound2-plugins
|
|
- libpipewire-0.3-0
|
|
# 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
|
|
# 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
|