Restores the ALSA layout binds in both snap recipes (bit-perfect hw: access inside the snap), lets the build cache save on main as well as slint-mvp, installs the desktop file as com.blitzfc.qbz.desktop so the AppStream launchable and the MPRIS DesktopEntry resolve in deb/rpm, clears the stale boot-restore error when a new browser sign-in starts, and adds the X11 dlopen libraries to the flake's runtime set. The flake version/rev/srcHash bump remains a tag-time step (documented in the release checklist, which is rewritten for the 2.0 Slint flow). cc
127 lines
4.4 KiB
YAML
127 lines
4.4 KiB
YAML
# 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
|