r2
Free open-source Cloudflare R2 desktop client and S3 GUI for macOS, Windows, and Linux. Manage Cloudflare R2, AWS S3, M…
Native TIDAL desktop client for Linux. Modern UI, custom themes, and bit-perfect lossless audio up to 24-bit/192kHz via…
git clone https://github.com/lullabyX/sone.gitlullabyX/sone
The native desktop client for TIDAL on Linux. Lossless streaming with bit-perfect ALSA output up to 24-bit/192kHz (MAX) — your DAC, not your browser's resampler.
Important
Requires an active TIDAL subscription. Not affiliated with TIDAL.
The Linux desktop app TIDAL never built.
SONE finally gives Linux users a first-class streaming client. It delivers the complete, fully-featured experience you expect with seamless library management and a sleek, familiar workflow—and then supercharges it.
We went beyond the basics with direct-to-DAC bit-perfect ALSA output, a resizable-adaptive floating miniplayer, music video playback, custom themes, Discord Rich Presence, and multi-service scrobbling (Last.fm, Libre.fm, ListenBrainz)—all wrapped in a fast, native Linux app.
pactl), and ALSA card (/proc/asound); flags every conversion, format mismatch, or volume alteration with a PRISTINE verdict for bit-clean playbacktidal:// URLs directly in SONESONE is a lightweight, native alternative to the official TIDAL web player and Electron-based unofficial clients.
SONE is officially available on Flathub, making it easy to install on any Linux distribution. You can install it via your software center or by using the CLI:
Install the application
flatpak install flathub io.github.lullabyX.sone
Run the application
flatpak run io.github.lullabyX.sone
Pre-built packages for Ubuntu/Debian (.deb), Fedora (.rpm), openSUSE (.rpm), and Arch Linux (PKGBUILD) are available on the GitHub Releases page.
Or add the repository so apt upgrade / dnf upgrade / zypper up keep SONE current automatically (the setup script auto-detects your distro and imports the signing key):
curl -1sLf 'https://dl.cloudsmith.io/public/lullabyx/sone/setup.deb.sh' | sudo -E bash sudo apt install sone
Derivatives (Kubuntu, Linux Mint, Pop!_OS, Zorin, MX, LMDE) use the same command.
curl -1sLf 'https://dl.cloudsmith.io/public/lullabyx/sone/setup.rpm.sh' | sudo -E bash sudo dnf install sone
curl -1sLf 'https://dl.cloudsmith.io/public/lullabyx/sone/setup.rpm.sh' | sudo -E bash sudo zypper install sone
yay -S sone-bin # prebuilt binary — or 'yay -S sone' to build from source
SONE is available on the Snap Store for any distribution with snap support. Install it via your software center or the CLI:
Install the application
sudo snap install sone
Run the application
sone
For exclusive / bit-perfect ALSA output, also connect the hardware-access interface:
sudo snap connect sone:alsa
SONE ships a Nix flake. On any system with Nix and flakes enabled, run it without installing:
nix run github:lullabyX/sone
Or install it into your profile:
nix profile install github:lullabyX/sone
The flake builds from source (no binary cache yet) and also exposes a development shell with every build and runtime dependency wired up:
nix develop github:lullabyX/sone # then: pnpm tauri dev
Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y source "$HOME/.cargo/env"
Node.js 22+ (via nvm, fnm, or your preferred method)
pnpm 11.x:
npm install -g pnpm@11.1.3 # or, if corepack ships with your Node install: corepack enable
System dependencies:
sudo apt install -y \
build-essential curl wget file patchelf \
libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libssl-dev libdbus-1-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav \
libsecret-1-dev libasound2-dev xdg-utils \
pulseaudio-utils
pulseaudio-utils provides the pactl binary, used by the signal-path panel to read OS mixer state (sink format/rate, volume, mute) in Normal mode. SONE runs without it but the Normal-mode panel will show degraded info. Exclusive mode is unaffected.
Optional (for exclusive ALSA output):
sudo apt install -y gstreamer1.0-alsa
sudo dnf install -y \
gcc gcc-c++ make curl wget file patchelf \
webkit2gtk4.1-devel gtk3-devel libappindicator-gtk3-devel librsvg2-devel openssl-devel dbus-devel \
gstreamer1-devel gstreamer1-plugins-base-devel \
gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-bad-free gstreamer1-plugin-libav \
libsecret-devel alsa-lib-devel xdg-utils \
pulseaudio-utils
pulseaudio-utils provides the pactl binary, used by the signal-path panel to read OS mixer state (sink format/rate, volume, mute) in Normal mode. SONE runs without it but the Normal-mode panel will show degraded info. Exclusive mode is unaffected.
Optional (for exclusive ALSA output):
sudo dnf install -y gstreamer1-plugins-base-tools
SONE is available on the AUR in two variants:
Install with your AUR helper:
yay -S sone # build from source # or yay -S sone-bin # pre-built binary
sudo pacman -S --needed \
base-devel curl wget file patchelf \
webkit2gtk-4.1 gtk3 libayatana-appindicator librsvg openssl dbus \
gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-libav \
libsecret alsa-lib xdg-utils \
libpulse
libpulse provides the pactl binary, used by the signal-path panel to read OS mixer state (sink format/rate, volume, mute) in Normal mode. SONE runs without it but the Normal-mode panel will show degraded info. Exclusive mode is unaffected.
Optional (for exclusive ALSA output):
sudo pacman -S --needed gst-plugin-pipewire alsa-plugins
Build and run:
git clone https://github.com/lullabyX/sone.git cd sone pnpm install pnpm tauri dev # Development mode pnpm tauri build # Release build (produces .deb, .rpm, .AppImage)
Using build scripts:
Docker-based build scripts are provided in build-scripts/build/ to produce distro-specific packages in isolated environments. Requires Docker.
./build-scripts/build/all.sh # Build all packages in parallel (deb, rpm, pacman) ./build-scripts/build/deb.sh # Build .deb only (Ubuntu 22.04) ./build-scripts/build/rpm.sh # Build .rpm only (Fedora) ./build-scripts/build/pacman.sh # Build pacman package only (Arch) ./build-scripts/build/all.sh --omit rpm # Build all except rpm
Output goes to dist/<format>/. Pass --no-cache to force a clean Docker build.
Note
NVIDIA GPU users: If you see a blank window, rendering glitches, or a Wayland protocol error on launch, start the app with:
WEBKIT_DISABLE_COMPOSITING_MODE=1 sone
No sound?
Make sure GStreamer plugins are installed — you need at minimum gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, and gstreamer1.0-libav (or your distro's equivalents).
Playback errors in exclusive/bit-perfect mode? SONE automatically detects your DAC's supported formats and sample rates, but if playback still fails, your hardware may not support the source format at all. Try a lower quality tier or switch to normal output mode.
"Error 71 (Protocol error) dispatching to Wayland display" on launch? This is a known WebKitGTK/Wayland issue affecting Tauri apps on systems with NVIDIA GPUs (tauri-apps/tauri#10702). As a workaround, launch SONE with the DMA-BUF renderer disabled:
WEBKIT_DISABLE_DMABUF_RENDERER=1 sone
If you're using X11 or don't have an NVIDIA GPU but still see this error, try updating your WebKitGTK and graphics drivers to the latest versions.
Blank window or rendering glitches on NVIDIA? If the app launches but shows a blank/white window or has visual artifacts, try disabling WebKit's compositing mode:
WEBKIT_DISABLE_COMPOSITING_MODE=1 sone
This is a known issue with NVIDIA's proprietary drivers and WebKitGTK hardware acceleration.
Yes. SONE is fully open source under the GPL-3.0 license, with no telemetry or tracking — your listening data stays on your machine.
Yes. SONE is a client for TIDAL and requires an active paid TIDAL subscription. SONE is an independent project and is not affiliated with or endorsed by TIDAL.
Any modern Linux distribution. SONE is on Flathub (works everywhere), and ships native packages for Debian/Ubuntu (.deb), Fedora and openSUSE (.rpm), and Arch Linux (AUR).
No. SONE is a streaming client only — it streams directly from TIDAL and does not download tracks for offline playback.
Yes. SONE plays TIDAL music videos in a dedicated player — fullscreen or minimized to the player bar — and videos share the same queue, shuffle, repeat, autoplay, favorites, and history as your audio tracks. You can browse and search videos, love them, and add them to playlists. Video audio is streamed and does not use the bit-perfect lossless signal path that music tracks use.
Your system's sound server (PulseAudio or PipeWire) or another application is already using the ALSA device. Exclusive and bit-perfect modes need direct hardware access — only one application can hold the device at a time.
To fix this, either close the other application using the device, or select a different output device in SONE's settings.
Both bypass your system's sound server (PulseAudio/PipeWire) and write directly to the ALSA hardware device. The difference is in how much processing happens before audio reaches your DAC.
Exclusive mode locks the ALSA device so no other application can use it. Audio is converted to a fixed format (32-bit integer, stereo) while preserving the source's native sample rate — no resampling occurs. You still have software volume control and volume normalization (ReplayGain).
Bit-perfect mode goes a step further. There is zero processing — no format conversion, no resampling, no volume control. The decoded audio reaches your DAC exactly as it was encoded. The volume slider is locked at 100% and disabled. This is the mode to use if you want the purest signal path to your DAC.
In short: exclusive gives you direct hardware access with volume control. Bit-perfect gives you a completely unaltered signal.
~/.config/sone/Issues and pull requests are welcome on GitHub. To set up a development environment, follow the Building from source instructions.
If you enjoy using SONE, consider giving the project a star to help others find it.
SONE is an independent, community-driven project. It is not affiliated with, endorsed by, or connected to TIDAL in any way. All content is streamed directly from TIDAL's service and requires a valid paid subscription. SONE is a streaming client only — it does not support offline downloads, and does not redistribute or circumvent protection of any content. As with any third-party client, please be aware of TIDAL's terms of use.
All trademarks belong to their respective owners.
TL;DR — SONE is an open-source, native Linux desktop client for TIDAL built with Tauri 2 and Rust. It streams lossless FLAC and Hi-Res audio up to 24-bit/192kHz, with exclusive ALSA output that bypasses PulseAudio and PipeWire entirely for bit-perfect playback directly to your DAC. It also plays TIDAL music videos in a dedicated player — fullscreen or minimized to the bar — that shares a single queue (shuffle, repeat, autoplay, favorites, and history) with your audio tracks. Lightweight, encrypted at rest, and fully offline — no telemetry, no tracking.
more like this
Free open-source Cloudflare R2 desktop client and S3 GUI for macOS, Windows, and Linux. Manage Cloudflare R2, AWS S3, M…
Open-source, offline-first face recognition attendance platform that runs on any webcam.
Vidwall Hub is a tool that allows you to easily import videos (mp4, mov) into the system wallpaper service and use them…
Oscillody is a free, real-time, oscilloscope-based audio visualizer. You can import up to 4 stems, customize the visual…
search projects, people, and tags