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:
media-control— system-wide, works on macOS 15.4+ (brew install media-control)nowplaying-cli— system-wide, older macOS (brew install nowplaying-cli)- Spotify via AppleScript (no install needed)
- 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).
Metadata
Release files for genius-tui 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| genius_tui-0.1.3.tar.gz | 9.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| genius_tui-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.5 kB
Release files / genius_tui-0.1.3.tar.gz
| Download URL | genius_tui-0.1.3.tar.gz |
|---|---|
| Size | 9.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
abc388e6d862529584cf4411ca4b1b1b00ee45d3b0fd1589766d9f0fa8fb18e6
|
|
BLAKE2b-256 checksum How to use checksums |
e3b3fa4add39e757225545fb07e0898e8d1601823ef512147aa57426633cdac4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / genius_tui-0.1.3-py3-none-any.whl
| Download URL | genius_tui-0.1.3-py3-none-any.whl |
|---|---|
| Size | 10.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a017b389195fc82bbd59b7731d291563ac5d802a99d07282f803f55bec0ffcbd
|
|
BLAKE2b-256 checksum How to use checksums |
c0438c3989d6a31f667dfcf18aa723684169aea5e4bd032d08ef0a065dba4c01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|