Files
qbz/README.md
T
vicrodh 8a094ef467 Initial project setup
- Tauri 2.0 + Svelte + TypeScript scaffolding
- Qobuz API client implementation (Rust)
  - Bundle token extraction
  - User authentication
  - Request signing (MD5 signatures)
  - Search/browse endpoints
  - Stream URL retrieval with quality fallback
- Tauri commands for frontend IPC
- Module stubs for player, queue, config
2026-01-08 22:35:34 -06:00

1.6 KiB

QBZ-NIX

Native Qobuz client for Linux with Hi-Fi audio support.

Why?

Browser-based players (Chromium, Firefox) have a hardcoded sample rate cap (~48kHz). Qobuz offers up to 192kHz Hi-Res content. QBZ-NIX bypasses this limitation with native audio playback.

Features

Core

  • Native audio playback (no browser limitations)
  • Search, browse albums, artists, tracks
  • Playback queue management
  • Quality selection with automatic fallback

Audio

  • Support for all Qobuz quality tiers (MP3, CD, Hi-Res, Ultra Hi-Res)
  • Sample rate / bit depth display
  • DAC passthrough mode for bit-perfect playback
  • Multiple audio backends (PipeWire, ALSA, PulseAudio)

Planned

  • Playlist management (local + Qobuz sync)
  • Favorites synchronization
  • Equalizer
  • Last.fm integration
  • Lyrics display

Tech Stack

  • Backend: Rust + Tauri
  • Frontend: Svelte + TypeScript
  • Audio: cpal/rodio with ALSA direct support

Development

Prerequisites

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

Setup

# Install dependencies
npm install

# Run in development mode
npm run tauri dev

# Build for production
npm run tauri build

Project Structure

qbz-nix/
├── src/                  # Frontend (Svelte)
├── src-tauri/
│   └── src/
│       ├── api/          # Qobuz API client
│       ├── player/       # Audio playback
│       ├── queue/        # Queue management
│       ├── config/       # Settings persistence
│       └── commands/     # Tauri IPC commands
└── static/               # Static assets

License

MIT