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')
|
||||
depends=('webkit2gtk-4.1' 'gtk3' 'alsa-lib' 'libappindicator-gtk3' 'libxkbcommon' 'openssl')
|
||||
optdepends=(
|
||||
'alsa-utils: Better ALSA device names and descriptions'
|
||||
'pipewire-alsa: PipeWire audio support'
|
||||
'pipewire-pulse: PulseAudio compatibility'
|
||||
)
|
||||
|
||||
@@ -30,6 +30,21 @@ finish-args:
|
||||
- --talk-name=org.freedesktop.portal.OpenURI
|
||||
|
||||
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
|
||||
- name: intltool
|
||||
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