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

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.2.tar.gz (9.1 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.2-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: genius_tui-0.1.2.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","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.2.tar.gz
Algorithm Hash digest
SHA256 471607164a2c6a4a404e301b54c9d2461cfc2ef9a2c1830f554b95743dbd19d8
MD5 74f6e57cad4701fb1cb45f55593c05fa
BLAKE2b-256 2384ea67ed7bf32870ddb84c41aaf298e8db64cb746bef12764365fe5da230ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: genius_tui-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 59633e096bd783acee246464056f28c6a93b5c292711ec0e937560a80228691c
MD5 0a7408700b4b614ff71c45c764e8b1a3
BLAKE2b-256 1447e923cfa5783adb655175ac440cfb5cdc42e16b6415eb61a2a6545741859a

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