Myx
Spotify player for the terminal. With reactive themes.
git clone https://github.com/HaseebKhalid1507/Myx.gitHaseebKhalid1507/Myxmyx
A lean, beautiful terminal Spotify player in Rust. Streams natively as a Spotify Connect device, with album-art-reactive theming, a live audio visualizer, and synced lyrics.
Myx.mp4
Requires Spotify Premium. Works on Linux, macOS, and Windows. Album art is crispest on kitty, WezTerm, or foot.
Install
# Arch (AUR) yay -S myx # macOS / Linux (Homebrew) brew install HaseebKhalid1507/homebrew-tap/myx # Cargo (all platforms — Linux, macOS, Windows) cargo install myx # Prebuilt binary (Linux x86_64, macOS) curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaseebKhalid1507/Myx/releases/latest/download/myx-installer.sh | sh
On Windows, install Rust first, then cargo install myx in
PowerShell. Set MYX_CLIENT_ID as an environment variable or place your client ID in
%USERPROFILE%\.config\myx\client_id.
Or grab a .deb / archive from Releases,
or build from source: cargo install --path ..
Get started
You need a free Spotify app client ID (one minute):
- Spotify developer dashboard, then Create app
- Add the redirect URI
http://127.0.0.1:8989/login - Copy the Client ID and set it:
export MYX_CLIENT_ID=<your-client-id>
Then run:
myx
First launch opens your browser to log in (OAuth PKCE, no secret needed). Then
browse with ↑↓ and hit ⏎ to play. After that, just myx.
Keys
⇥ / [ ] switch section ← → switch view
↑↓ / j k move ⏎ play / open
⇧ ⏎ play the highlighted album, playlist or artist
/ search a actions
space play · pause n / b next · prev
⇧ ← → seek s shuffle
+ / - volume R repeat
o sort r reload
z hide sidebar q quit
Media keys (Play/Pause, Stop, Next, Prev, Volume) work when the terminal is focused. Mouse works too: click tabs, click a track, double-click to play.
Holding ⇧ ← / ⇧ → scrubs continuously and commits one seek when you let go.
⇧ ⏎ needs a terminal that reports modified Enter (kitty, WezTerm, foot); P
does the same everywhere.
The album-art protocol is detected at startup and picked per terminal, including
inside tmux. If your tmux has no sixel support, add set -g focus-events on to
~/.tmux.conf so the art is re-sent when you switch back to myx's window.
Config
~/.config/myx/config.toml is written on first run with every key commented
out, so there is a file to edit and nothing to look up:
# Rows kept visible above and below the cursor before the list scrolls. scrolloff = 3 # Spotify app client id. MYX_CLIENT_ID overrides this if it is set. client_id = "your-client-id" # kitty, iterm2, sixel or halfblocks. Leave it out to auto-detect; set it if # album art comes out as a coarse mosaic, which means the terminal never # answered the detection query. MYX_PROTOCOL overrides this. protocol = "kitty"
Credits
Streaming adapts pieces of spotify-player (MIT, © Thang Pham); visual language after noodle; built on ratatui and librespot. See NOTICE.
License
MIT, see LICENSE.
more like this
TachiSnap
TachiSnap — Pixel Snapper for animation pixel artists. Rust + WebAssembly client-side tool for cleaning up AI-generated…
meine
meine 🌒 - A CLI file manager and system utility built with Textual. It combines intuitive command parsing with rich t…
bit_gossip
Pathfinding library for calculating all node pairs' shortest paths in an unweighted undirected graph.



