If you have Rust installed:
cargo install --locked spotatuiwinget install spotatuibrew tap LargeModGames/spotatui
brew install spotatuiDownload from GitHub Releases:
| Platform | File |
|---|---|
| Windows 10/11 (64-bit) | spotatui-windows-x86_64.zip |
| Linux (Ubuntu, Arch, Fedora, etc.) | spotatui-linux-x86_64.tar.gz |
| macOS (Intel) | spotatui-macos-x86_64.tar.gz |
| macOS (Apple Silicon M1/M2/M3) | spotatui-macos-aarch64.tar.gz |
Checksums (.sha256) are provided if you want to verify the download.
# Pre-built binary (faster)
yay -S spotatui-bin
# or
paru -S spotatui-bin
# Build from source
yay -S spotatui
# or
paru -S spotatuiThe pre-built Linux binary (and the spotatui-bin AUR package) is compiled with the PipeWire audio-visualization backend, so you need PipeWire installed for the visualizer:
# Debian/Ubuntu
sudo apt-get install libpipewire-0.3-0
# Arch Linux (already included with pipewire)
sudo pacman -S pipewire
# Fedora (already included with pipewire)
sudo dnf install pipewireNote: Most modern Linux distributions already have PipeWire installed by default. If you build from source instead (
cargo install), the default build uses thecpal-based visualizer backend and does not require PipeWire.
spotatui uses the portaudio backend for better stability and bluetooth device support (AirPods, etc.):
brew install portaudioEnsure you have Rust installed.
macOS:
brew install portaudioLinux (Debian/Ubuntu):
sudo apt-get install libssl-dev libasound2-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev pkg-configLinux (Arch):
sudo pacman -S openssl alsa-lib pkg-configLinux (Fedora):
sudo dnf install openssl-devel alsa-lib-devel pkg-configgit clone https://github.com/LargeModGames/spotatui.git
cd spotatuimacOS:
cargo install --path . --no-default-features --features telemetry,streaming,discord-rpc,cover-art,self-update,scripting,portaudio-backend,audio-viz-cpal,macos-media,local-files,subsonic,internet-radio,youtube,qobuzLinux/Windows:
cargo install --path .Nix:
nix-buildWhen a new version is available, you'll see a popup notification on startup. To update:
- Close spotatui
- Run:
spotatui update --install
If you installed via a package manager (AUR, cargo, etc.), update through there instead.
spotatui talks to Spotify's Web API through a Spotify app. The first run asks which app to use:
- The shared ncspot client ID. No dashboard needed. Spotify counts every ncspot and spotatui user against this one app, so it is often rate limited: playlists load slowly or not at all, and the status bar says so.
- Your own Spotify app (recommended). Spotify gives each app a rate limit of its own.
To use your own app:
- Go to the Spotify Dashboard and click Create app.
- Add
http://127.0.0.1:8888/callbackto the Redirect URIs. The wizard asks for the port; 8888 is the default. - Copy the
Client ID. No client secret is needed. - Run
spotatui --reconfigure-auth, choose option 2, and paste the id. The browser opens once to sign in.
The wizard keeps the shared id as fallback_client_id in client.yml, for a login that fails on your own app. A client.yml from an older version, with the shared id as client_id and your app as fallback_client_id, is read the other way round: your app leads. Your app still has no login of its own, so the first launch after the upgrade runs on the shared id and the status bar says so; run spotatui --reconfigure-auth once, choose 2, and paste the id. Native streaming signs in on its own and needs no dashboard entry.