Skip to content

Releases: dtDhruv/ytkew

Release list

ytkew 0.1.0

Choose a tag to compare

@dhruv-rudra dhruv-rudra released this 05 Sep 18:45

A terminal YouTube Music player, in the spirit of kew — cover art, a spectrum visualizer, album-derived colours, no distractions — playing from your own YouTube Music account.

Documentation · crates.io

Install

cargo install ytkew
ytkew --install-desktop-entry     # launcher entry and icon

Or from source, which does both:

git clone https://github.com/dtDhruv/ytkew && cd ytkew && make install

Needs mpv and yt-dlp on PATH. Search, radio and lyrics work signed out; only your own library needs credentials.

What's in it

  • Full-resolution cover art — kitty graphics where the terminal supports it, sixel where it does not, truecolor half-blocks everywhere else
  • Gapless playback — the next track is resolved and buffered while the current one plays, so transitions never stall on a yt-dlp round trip
  • Spectrum visualizer from a real FFT over the audio output
  • Colours from the album art, ten built-in themes, or write your own by dropping a TOML file in ~/.config/ytkew/themes/
  • A library that browses like a file manager, one column per level
  • Search across songs, videos, albums, artists and playlists
  • A queue that behaves like YouTube Music's — a one-off track played mid-playlist slots in next instead of throwing the playlist away
  • Optional vim keybindings — gg, G, ctrl+d/u, dd, J/K
  • MPRIS — media keys, and a now-playing panel entry with artwork
  • Mouse support throughout, and lyrics, radio, liking, shuffle and repeat

Signing in

ytkew --auth browser lifts an existing Firefox login, so signing in at music.youtube.com is all the setup there is. --auth cookie takes a pasted header from any browser, and --auth oauth runs a device flow.

Platforms

Linux and macOS, both covered by CI. Windows is not supported yet — say so in an issue if you want it.

Known limits

  • Unofficial API: YouTube can change it at any time.
  • A stale yt-dlp is the most common reason a working ytkew stops playing. Keep it current with yt-dlp -U; ytkew checks the version and tells you when tracks start failing.
  • The visualizer captures the whole audio sink, so other applications' sound shows up in the bars. cava behaves the same way.
  • Paged fetches stop at 5,000 items, so a longer playlist is truncated.