Scripts and status bars.
Every action is also a command, so waxon fits into tmux, waybar, hotkey daemons and shell scripts without opening the app.
waxon status prints what's playing in any format you like, or as JSON.
waxon is a Spotify client for the terminal with vim keys. It plays music by itself or drives the Spotify app, with album art and synced lyrics.
brew trust danfry1/tap brew install danfry1/tap/waxon
macOS and Linux. Homebrew asks you to trust a third-party tap once.
nix profile install github:danfry1/waxonFlakes. To try it without installing: nix run github:danfry1/waxon
scoop bucket add danfry1 https://github.com/danfry1/scoop-bucket scoop install waxon
Windows, in PowerShell.
go install github.com/danfry1/waxon@latestAny platform with Go installed.
Every release has .deb, .rpm and .apk packages, and archives for Linux, macOS and Windows on amd64 and arm64.
Each comes with SHA-256 checksums.
Needs Spotify Premium.
Click the terminal and type, or tap the keys.
waxon is the player. It runs its own Spotify Connect device, so there's no Spotify app to keep open. Setup installs and signs in the player for you.
waxon drives the Spotify app on this computer, or your phone, or a speaker. If the app is closed, M opens it and hands the music over.
M switches between them and carries on from the same second; press it here or in the demo. Your keyboard's media keys and the system's Now Playing work either way.
What's playing, what you've queued, then what's next from the playlist. Enter skips straight to a track and keeps the rest of the queue.
Every action is also a command, so waxon fits into tmux, waybar, hotkey daemons and shell scripts without opening the app.
waxon status prints what's playing in any format you like, or as JSON.
$ waxon status ▶ Let It Happen — Tame Impala $ waxon play daft punk get lucky $ waxon vol +5 $ waxon status --format '{icon} {title} [{position}/{duration}]' ▶ Get Lucky [0:41/6:09] $ waxon status --json | jq .device "waxon (studio)"
s searches Spotify. Artist pages open with Play and Shuffle, then the popular tracks and albums.
o on a track adds it to a playlist or removes it, and visual mode does a run of tracks at once.
Under 80 columns waxon shows one pane at a time, so it fits a tmux side pane.
Every key can be remapped in config.json, and ? always shows the ones you have.
waxonThe first run is a guided setup of about a minute: sign in to Spotify in your browser, then choose where music plays.
?Help lists every key, including the ones you've remapped. The README covers the rest.
waxon doctor checks your login, devices, network and terminal, and says what to fix.
waxon has no telemetry or analytics. Besides Spotify it talks only to lrclib, for lyrics, and to GitHub once a day to check for a new release; you can turn both off. Sign-in uses PKCE, so there's no client secret, and your password only ever goes to Spotify's own sign-in page.
On a work network it uses your proxy settings, and "lyrics": false keeps it to Spotify alone.
accounts.spotify.comSigning inapi.spotify.comYour library, search and playback*.scdn.coAlbum and playlist coverslrclib.netLyrics, looked up by the track's title, artist, album and lengthSpotify's audio serversOnly when waxon is the player