Add alsa-utils to all package formats with appropriate handling
AUR (Arch Linux): - Added to optdepends: 'alsa-utils: Better ALSA device names and descriptions' - Users get notification to install, but not required Flatpak: - Included alsa-utils module in bundle (builds from source) - Version 1.2.12 from alsa-project.org - Sandboxed environment can now execute aplay -L internally - Disabled alsamixer and xmlto (not needed, reduces size) - Users get real device descriptions automatically Snap (future - not yet implemented): - Created snapcraft.yaml template - stage-packages includes alsa-utils - Will be bundled when Snap support is implemented AppImage (future - not yet implemented): - Created README.md documenting dependencies - AppImage uses host system commands (aplay from host) - Users need to install alsa-utils on their system - Fallback to CPAL works if not installed Summary by format: - .deb/.rpm: Recommends alsa-utils (auto-installed, can be removed) - AUR: optdepends (user notified, optional) - Flatpak: Bundled (always available) - Snap: Will be bundled (future) - AppImage: Host dependency (user installs)
This commit is contained in:
1 parent
037b8569d6
commit
7091c64d56
4 files changed
+197
No files matched your search
@@ -0,0 +1,99 @@
|
|||||||
|
# QBZ AppImage
|
||||||
|
|
||||||
|
## About AppImage
|
||||||
|
|
||||||
|
AppImage is a portable format that bundles the application and its dependencies.
|
||||||
|
However, it still uses system libraries and commands from the host system.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
### Required (Hard Dependencies)
|
||||||
|
|
||||||
|
The following must be installed on the host system for QBZ to work:
|
||||||
|
|
||||||
|
- **ALSA library** (`libasound2` on Debian/Ubuntu, `alsa-lib` on Arch)
|
||||||
|
- **GTK3** and **WebKit2GTK**
|
||||||
|
- **OpenSSL**
|
||||||
|
|
||||||
|
These are typically already installed on most Linux distributions.
|
||||||
|
|
||||||
|
### Optional (Recommended)
|
||||||
|
|
||||||
|
For the best experience, install these optional packages:
|
||||||
|
|
||||||
|
#### alsa-utils
|
||||||
|
|
||||||
|
**Package names:**
|
||||||
|
- Debian/Ubuntu: `alsa-utils`
|
||||||
|
- Fedora/RHEL: `alsa-utils`
|
||||||
|
- Arch: `alsa-utils`
|
||||||
|
|
||||||
|
**Why it's needed:**
|
||||||
|
- Provides the `aplay` command used by QBZ to enumerate ALSA devices
|
||||||
|
- Without it, you'll see raw device names like `front:CARD=CS201,DEV=0`
|
||||||
|
- With it, you'll see friendly names like "Cambridge Audio USB Front Output"
|
||||||
|
|
||||||
|
**What happens without it:**
|
||||||
|
- ALSA Direct backend falls back to CPAL enumeration (still works)
|
||||||
|
- Device names won't be as descriptive
|
||||||
|
- All functionality works, just with less friendly UI
|
||||||
|
|
||||||
|
#### PipeWire/PulseAudio
|
||||||
|
|
||||||
|
**For PipeWire:**
|
||||||
|
- `pipewire-alsa` - ALSA compatibility
|
||||||
|
- `pipewire-pulse` - PulseAudio compatibility
|
||||||
|
|
||||||
|
**For PulseAudio:**
|
||||||
|
- `pulseaudio`
|
||||||
|
- `pulseaudio-alsa`
|
||||||
|
|
||||||
|
**Why it's needed:**
|
||||||
|
- Required for PipeWire/PulseAudio audio backends
|
||||||
|
- Required for DAC Passthrough feature (uses `pw-metadata`)
|
||||||
|
|
||||||
|
## Building AppImage
|
||||||
|
|
||||||
|
TODO: Add build instructions using appimagetool or similar
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Download the AppImage from releases
|
||||||
|
2. Make it executable: `chmod +x QBZ-*.AppImage`
|
||||||
|
3. Run: `./QBZ-*.AppImage`
|
||||||
|
|
||||||
|
## System Integration
|
||||||
|
|
||||||
|
To integrate with your desktop environment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install optional tool for desktop integration
|
||||||
|
sudo apt install appimaged # Debian/Ubuntu
|
||||||
|
# or
|
||||||
|
yay -S appimagelauncher # Arch
|
||||||
|
|
||||||
|
# AppImage will automatically appear in your application menu
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### "No ALSA devices found"
|
||||||
|
|
||||||
|
Install `alsa-utils`:
|
||||||
|
```bash
|
||||||
|
sudo apt install alsa-utils # Debian/Ubuntu
|
||||||
|
sudo dnf install alsa-utils # Fedora
|
||||||
|
sudo pacman -S alsa-utils # Arch
|
||||||
|
```
|
||||||
|
|
||||||
|
### "DAC Passthrough not working"
|
||||||
|
|
||||||
|
Ensure PipeWire is running:
|
||||||
|
```bash
|
||||||
|
systemctl --user status pipewire
|
||||||
|
```
|
||||||
|
|
||||||
|
Install pw-metadata:
|
||||||
|
```bash
|
||||||
|
sudo apt install pipewire-bin # Debian/Ubuntu (includes pw-metadata)
|
||||||
|
```
|
||||||
@@ -8,6 +8,7 @@ url="https://github.com/vicrodh/qbz"
|
|||||||
license=('MIT')
|
license=('MIT')
|
||||||
depends=('webkit2gtk-4.1' 'gtk3' 'alsa-lib' 'libappindicator-gtk3' 'libxkbcommon' 'openssl')
|
depends=('webkit2gtk-4.1' 'gtk3' 'alsa-lib' 'libappindicator-gtk3' 'libxkbcommon' 'openssl')
|
||||||
optdepends=(
|
optdepends=(
|
||||||
|
'alsa-utils: Better ALSA device names and descriptions'
|
||||||
'pipewire-alsa: PipeWire audio support'
|
'pipewire-alsa: PipeWire audio support'
|
||||||
'pipewire-pulse: PulseAudio compatibility'
|
'pipewire-pulse: PulseAudio compatibility'
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -30,6 +30,21 @@ finish-args:
|
|||||||
- --talk-name=org.freedesktop.portal.OpenURI
|
- --talk-name=org.freedesktop.portal.OpenURI
|
||||||
|
|
||||||
modules:
|
modules:
|
||||||
|
# alsa-utils for better ALSA device names (aplay -L)
|
||||||
|
- name: alsa-utils
|
||||||
|
buildsystem: autotools
|
||||||
|
config-opts:
|
||||||
|
- --disable-alsamixer
|
||||||
|
- --disable-xmlto
|
||||||
|
- --with-udev-rules-dir=/app/lib/udev/rules.d
|
||||||
|
cleanup:
|
||||||
|
- /share/man
|
||||||
|
- /share/sounds
|
||||||
|
sources:
|
||||||
|
- type: archive
|
||||||
|
url: https://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.12.tar.bz2
|
||||||
|
sha256: 5f0faf83775ce9a7ad6ddcca7b19b54917e7c1a3d10e96a9e0cda29a288c49e3
|
||||||
|
|
||||||
# intltool required for libdbusmenu
|
# intltool required for libdbusmenu
|
||||||
- name: intltool
|
- name: intltool
|
||||||
buildsystem: autotools
|
buildsystem: autotools
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
# QBZ Snap package configuration
|
||||||
|
# NOTE: Not yet implemented - this is a template for future use
|
||||||
|
|
||||||
|
name: qbz
|
||||||
|
version: '1.1.5'
|
||||||
|
summary: Native Qobuz client for Linux with bit-perfect audio
|
||||||
|
description: |
|
||||||
|
QBZ is a native Qobuz streaming client for Linux, designed for audiophiles
|
||||||
|
who need bit-perfect playback without browser sample rate limitations.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
- Bit-perfect hi-res audio playback (up to 192kHz/24-bit)
|
||||||
|
- DAC Passthrough for automatic sample rate switching
|
||||||
|
- ALSA Direct backend for exclusive hardware access
|
||||||
|
- PipeWire and PulseAudio support
|
||||||
|
- Last.fm scrobbling
|
||||||
|
- Chromecast and DLNA casting
|
||||||
|
- Offline mode with local library support
|
||||||
|
|
||||||
|
grade: stable
|
||||||
|
confinement: strict
|
||||||
|
base: core22
|
||||||
|
|
||||||
|
architectures:
|
||||||
|
- build-on: amd64
|
||||||
|
|
||||||
|
apps:
|
||||||
|
qbz:
|
||||||
|
command: bin/qbz
|
||||||
|
extensions: [gnome]
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
- audio-playback
|
||||||
|
- home
|
||||||
|
- removable-media
|
||||||
|
- desktop
|
||||||
|
- desktop-legacy
|
||||||
|
- wayland
|
||||||
|
- x11
|
||||||
|
- unity7
|
||||||
|
- gsettings
|
||||||
|
- pulseaudio
|
||||||
|
- alsa
|
||||||
|
|
||||||
|
parts:
|
||||||
|
qbz:
|
||||||
|
plugin: rust
|
||||||
|
source: ../..
|
||||||
|
build-packages:
|
||||||
|
- libwebkit2gtk-4.1-dev
|
||||||
|
- libgtk-3-dev
|
||||||
|
- libayatana-appindicator3-dev
|
||||||
|
- librsvg2-dev
|
||||||
|
- patchelf
|
||||||
|
- libssl-dev
|
||||||
|
- libasound2-dev
|
||||||
|
- pkg-config
|
||||||
|
# alsa-utils for aplay command (device enumeration)
|
||||||
|
- alsa-utils
|
||||||
|
stage-packages:
|
||||||
|
- libwebkit2gtk-4.1-0
|
||||||
|
- libgtk-3-0
|
||||||
|
- libayatana-appindicator3-1
|
||||||
|
- libasound2
|
||||||
|
- libssl3
|
||||||
|
# Include alsa-utils in the snap for aplay -L command
|
||||||
|
- alsa-utils
|
||||||
|
override-build: |
|
||||||
|
# Install Node.js for frontend build
|
||||||
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
||||||
|
apt-get install -y nodejs
|
||||||
|
|
||||||
|
# Build frontend
|
||||||
|
npm ci
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Build Tauri backend
|
||||||
|
cargo build --release
|
||||||
|
|
||||||
|
# Install binary
|
||||||
|
mkdir -p $SNAPCRAFT_PART_INSTALL/bin
|
||||||
|
cp target/release/qbz-nix $SNAPCRAFT_PART_INSTALL/bin/qbz
|
||||||
Reference in new issue
Block a user