Skip to main content

Textual TUI displaying synced lyrics for the currently playing song (LRCLIB + Genius)

Project description

genius-tui

Synced lyrics for whatever is playing, in your terminal.

Detects the currently playing song system-wide on macOS, fetches time-synchronized lyrics from LRCLIB (free, no API key), and falls back to scraping plain lyrics from Genius when no synced version exists. Synced lines highlight and auto-scroll in time with playback.

genius-tui showing synced lyrics and album art

Note: Genius itself only has plain-text lyrics (no timestamps), which is why LRCLIB is the primary source for true sync.

Install & run

uvx genius-tui            # run without installing
# or
pip install genius-tui && genius-tui
# or, from a checkout
uv run genius-tui

Now-playing backends

Tried in order; the first one that works is remembered:

  1. media-control — system-wide, works on macOS 15.4+ (brew install media-control)
  2. nowplaying-cli — system-wide, older macOS (brew install nowplaying-cli)
  3. Spotify via AppleScript (no install needed)
  4. Apple Music via AppleScript (no install needed)

So with Spotify or Apple Music it works out of the box; install media-control for other players (browser, VLC, etc.). The first AppleScript call may trigger a macOS Automation permission prompt for your terminal.

Keys

Key Action
q Quit
r Refetch lyrics
+/- Nudge sync offset ±0.5 s
f Toggle auto-follow (free scrolling)
h Toggle footer
l Toggle lyrics-only mode
o Open the song's Genius page in a browser

Behavior notes

  • Synced (LRCLIB): current line is highlighted and centered.
  • Plain (LRCLIB/Genius): position is estimated from track progress, so scrolling is approximate.
  • Header shows position, lyrics source, and detection backend; a non-zero sync offset appears top-right (e.g. delay +1.5s).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

genius_tui-0.1.3.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

genius_tui-0.1.3-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file genius_tui-0.1.3.tar.gz.

File metadata

  • Download URL: genius_tui-0.1.3.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.31 {"installer":{"name":"uv","version":"0.11.31","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for genius_tui-0.1.3.tar.gz
Algorithm Hash digest
SHA256 abc388e6d862529584cf4411ca4b1b1b00ee45d3b0fd1589766d9f0fa8fb18e6
MD5 9fa66c364de82b4141a49a5f3507111d
BLAKE2b-256 e3b3fa4add39e757225545fb07e0898e8d1601823ef512147aa57426633cdac4

See more details on using hashes here.

File details

Details for the file genius_tui-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: genius_tui-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.31 {"installer":{"name":"uv","version":"0.11.31","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for genius_tui-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a017b389195fc82bbd59b7731d291563ac5d802a99d07282f803f55bec0ffcbd
MD5 d08303bd4a6d2015d458e530c521557f
BLAKE2b-256 c0438c3989d6a31f667dfcf18aa723684169aea5e4bd032d08ef0a065dba4c01

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page