myx 0.3.0

A lean, beautiful terminal Spotify player
docs.rs failed to build myx-0.3.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: myx-0.2.5

myx

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.

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):

  1. Spotify developer dashboard, then Create app
  2. Add the redirect URI http://127.0.0.1:8989/login
  3. 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.

Inside tmux, add set -g focus-events on to ~/.tmux.conf so album art is re-sent the moment you switch back to myx's window.

Config

Optional, at ~/.config/myx/config.toml. Every key has a default, so you only write the ones you want to change:

# 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"

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.