vicrodh fbfa067b94 feat(cast): add multi-protocol support for Chromecast, DLNA, and AirPlay
- Update CastPicker to show protocol tabs with device counts
- Register DLNA and AirPlay state and commands in lib.rs
- Add Deserialize derive to DlnaMetadata and AirPlayMetadata
- Fix capabilities file (remove unavailable fs permissions)
- Remove unused IpAddr import in media_server.rs
2026-01-10 03:41:11 -06:00
2026-01-08 22:35:34 -06:00
2026-01-08 22:35:34 -06:00
2026-01-08 22:35:34 -06:00
2026-01-08 22:35:34 -06:00

QBZ logo

GitHub repo Release Version License Last commit Platform Language: Rust UI: Svelte

QBZ

QBZ is a free and open source (FOSS) Qobuz client for Linux with native, high-fidelity playback. It is a real desktop application, not a web wrapper, so it can use DAC passthrough, preserve hi-res sample rates end-to-end, and deliver bit-perfect audio.

Why QBZ

Browsers cap audio output around 48 kHz, while Qobuz streams up to 192 kHz. QBZ uses a native playback pipeline with direct device control so your system and DAC receive the original resolution, with caching and system integrations that wrappers cannot provide.

Screenshots

Coming soon.

Features

Streaming and Playback

  • Qobuz authentication and full catalog search (albums, tracks, artists, playlists).
  • Native decoding for FLAC and MP3 with real-time playback state updates.
  • Quality selection with automatic fallback across Qobuz tiers.
  • Audio device enumeration and per-device output selection.
  • DAC passthrough mode for bit-perfect playback.
  • Gapless-ready playback pipeline with precise position tracking.

Queue and Library

  • Queue management with shuffle, repeat, and history navigation.
  • In-memory audio cache with LRU eviction and next-track prefetching.
  • Favorites and playlists from your Qobuz account.
  • Local library backend: directory scanning, metadata extraction, CUE sheet parsing, and SQLite indexing.

Integrations

  • MPRIS media controls and media key support on Linux.
  • Desktop notifications for track changes.
  • Last.fm scrobbling and now-playing updates.
  • Shareable Qobuz URLs and universal SongLink links (Odesli).

Interface

  • Now playing, queue panel, and full-screen playback views.
  • Focus mode for distraction-free listening.
  • English and Spanish localization.

Open Source

QBZ is MIT-licensed and fully open source. No telemetry, no lock-in, and no hidden services. Just a clean, transparent player built for Linux audio fans.

Inspiration

QBZ draws inspiration from projects like qobuz-dl, and from the broader Linux audio community that values open tools and high-fidelity playback.

Tech Stack

  • Desktop: Rust + Tauri 2
  • Frontend: SvelteKit + TypeScript + Vite
  • Audio: rodio + symphonia
  • Networking: reqwest
  • Local library: walkdir + lofty + rusqlite
  • Integrations: souvlaki (MPRIS), notify-rust, SongLink (Odesli)
  • UX: svelte-i18n, lucide-svelte

Development

Prerequisites

  • Rust (latest stable)
  • Node.js 18+
  • Linux with audio support (PipeWire, ALSA, or PulseAudio)

Setup

# Install dependencies
npm install

# Run in development mode
npm run tauri dev

# Build for production
npm run tauri build

Environment Variables (Building from Source Only)

Note: If you're using pre-built binaries from the Releases page, Last.fm integration is already configured and ready to use. The following instructions are only for developers building from source.

Copy the example environment file and configure it with your credentials:

cp .env.example .env

Last.fm Integration

To enable Last.fm scrobbling when building from source, you need to create a Last.fm API application:

  1. Go to Last.fm API Account
  2. Create a new application (any name works)
  3. Copy your API Key and Shared Secret
  4. Update your .env file:
LAST_FM_API_KEY=your_api_key_here
LAST_FM_API_SHARED_SECRET=your_shared_secret_here
LAST_FM_APP_NAME=your_app_name
LAST_FM_APP_REGISTER=your_lastfm_username

The application will work without Last.fm credentials, but scrobbling will be disabled.

Discogs Integration

To enable automatic album artwork fetching from Discogs when building from source:

  1. Go to Discogs Developer Settings
  2. Create a new application
  3. Copy your Consumer Key and Consumer Secret
  4. Update your .env file:
DISCOGS_API_CLIENT_KEY=your_consumer_key_here
DISCOGS_API_CLIENT_SECRET=your_consumer_secret_here

The application will work without Discogs credentials, but automatic artwork fetching for local library will be disabled.

Project Structure

qbz-nix/
├── src/                  # Frontend (SvelteKit)
├── src-tauri/
│   └── src/
│       ├── api/          # Qobuz API client
│       ├── player/       # Audio playback engine
│       ├── queue/        # Queue management
│       ├── cache/        # Audio cache and prefetch
│       ├── library/      # Local library backend
│       ├── lastfm/       # Last.fm integration
│       ├── share/        # SongLink / share utilities
│       ├── media_controls/ # MPRIS integration
│       └── commands/     # Tauri IPC commands
└── static/               # Static assets and logo

License

MIT

S
Description
No description provided
Readme MIT
74 MiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 70.8%
QML 26.2%
Python 0.8%
Shell 0.7%
C++ 0.7%
Other 0.7%