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.

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)

Behavior notes

  • Synced (LRCLIB): current line is highlighted and centered.
  • Plain (LRCLIB/Genius): position is estimated from track progress, so scrolling is approximate.
  • Status bar shows position, lyrics source, detection backend, and offset.

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.1.tar.gz (7.5 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.1-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: genius_tui-0.1.1.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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.1.tar.gz
Algorithm Hash digest
SHA256 cd01e12ae3569080cd2b9cc6a50ee4b762f2508d6a0e1b9a7d4c7367e33c98c6
MD5 4abb8c9bbe37170e71711750c7dce311
BLAKE2b-256 1280d0578a8b9588c5a31b010a05d44b33d01b10cfd76dc2801155d44131cc4a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: genius_tui-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8713ab60984472137d41c09133713544e9112d66e6b76d69daa90058428ead6b
MD5 5cb2222cee53617e10716bf29e8a569d
BLAKE2b-256 b00e2aa24932bf4ef4b5a05c85325fa4f5f78d58668240ed3f9ede579cae4d67

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