Skip to content

About

YouTube Music TUI client with vim keybindings, synced lyrics, and cross-platform media keys

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

ytm-player — YouTube Music in your terminal — synced lyrics, vim keys, mpv backend. Runs on Linux, macOS, Windows. Free-tier supported.

Visit ytm-player.com

PyPI Python 3.10+ CI License

Install  Quickstart  Documentation  Contributing  Changelog


ytm-player demo

Available on PyPI, AUR, NixOS, and Gentoo — actively maintained with cross-platform support.

Look of this fork

This fork restyles the TUI after the YouTube Music web player. Kitty draws real cover art through the graphics protocol. The captures below use kitty with IBM Plex Mono, with the playlist sidebar collapsed.

Home, scrolled to the last shelves. Each shelf is a row of rounded covers with the title and the artist below. A thin scroll line runs under each row.

Home page, last shelves

Playlist. A hero with the cover, the track count, and Play, Shuffle, Save and Radio sits above the track table. The table is pure black. The current row and the playing track are dim green.

Playlist page

Now playing. The large cover sits on the left. Up next sits in the middle of the right half: each row has a small cover, a bold title over the artist, and the duration. Click a row to play it.

Now-playing page with Up next

Lyrics. Synced lines light word by word. YouTube times lines only, so each word gets a share of the line's time by its length, and it lights 1 s early.

Now-playing page with the lyrics panel

Player bar. The bar follows the web player:

  • The seek line on top is the progress bar. Under the mouse it grows into a band you can click to seek, with a time tooltip.
  • Left: previous, play, next and the time.
  • Middle: the cover and the title as one block, with the focused row after a › when it fits.
  • Right: like, volume, repeat and shuffle. Icons are grey when off and theme green when on.

Volume, shuffle, repeat, the lyrics panel and album art persist across runs. See remember_layout in docs/configuration.md.

Features

  • Vim-style keybindings — j/k movement, multi-key sequences (g s for search, g l for library), count prefixes (5j)
  • Synced lyrics — live-highlighted with LRCLIB fallback for tracks YouTube doesn't have, with title sanitization for better LRCLIB matches
  • mpv backend — gapless audio, stream prefetching, broad codec support
  • Cross-platform native integrations — MPRIS (Linux), Now Playing (macOS), media keys (Windows)
  • Theming — 18+ Textual themes plus per-app color overrides in theme.toml
  • Spotify import — pull playlists in via API or scraper fallback
  • CLI + IPC — control a running TUI from another terminal (ytm play, ytm pause, etc.)
  • Free-tier support — works without YouTube Music Premium
  • Session resume — last-playing track + queue restored on launch
  • Local cache — LRU audio cache for offline-like replay of previously heard tracks
  • Discord + Last.fm — Rich Presence and scrobbling

Requirements

  • Python 3.10+
  • mpv (audio playback backend, must be installed system-wide)
  • A YouTube Music account (free or Premium)

Install

# PyPI (Linux / macOS / Windows)
pip install ytm-player

# Arch / CachyOS / Manjaro (AUR)
yay -S ytm-player-git

For NixOS, Gentoo, Windows-specific mpv DLL setup, source builds, and optional extras (Discord, Last.fm, Spotify import, etc.), see docs/installation.md.

Quickstart

ytm setup    # one-time auth (auto-detects browser cookies)
ytm          # launch the TUI

Windows: replace ytm with py -m ytm_player.

Documentation

Topic Link
Per-platform install + optional extras docs/installation.md
config.toml + theme.toml reference docs/configuration.md
Full keyboard + mouse keybindings docs/keybindings.md
All ytm CLI subcommands docs/cli-reference.md
Spotify playlist import docs/spotify-import.md
Troubleshooting (mpv / auth / MPRIS / macOS / cache) docs/troubleshooting.md
File layout + stack docs/architecture.md
Contributing CONTRIBUTING.md
Security policy SECURITY.md

Contributors

Thanks to @dmnmsc, @Villoh, @valkyrieglasc, @dsafxP, @Thayrov, @glywil, @Kineforce, @CarterSnich, @Tohbuu, @nitsujri, @uhs-robert, @moschi, @firedev, @wgordon17, @gitiy1, @hanandewa5, @aimar-a, @Gimar250, @Wiibleyde, @szx19970521, @aaguilar-hub, @TheoBassaw, @holstvoogd, and @ProfessionalGriefer for bug reports, fixes, packaging, and platform support.

Changelog

See CHANGELOG.md for the full release history.

About

YouTube Music TUI client with vim keybindings, synced lyrics, and cross-platform media keys

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages