hermes-lyrics
Time-synced lyrics for whatever you're playing on Spotify, as a page inside
Hermes Desktop. The current line lights up and scrolls to the centre as the
song plays; click any line to jump there.
Features
- Lyrics page in the sidebar (and
Lyrics: Openin the command palette) - Follows Spotify playback in real time, line by line
- Click a line to seek;
↑/↓jump to the previous/next line - Sync offset (
[/], ±0.5 s) for lyrics that run early or late, remembered between sessions - Pauses auto-scroll while you scroll yourself, with a "Back to current line" button
- Plain (unsynced) lyrics and instrumental tracks handled
- Respects
prefers-reduced-motion
Requirements
- The official Hermes
spotifyplugin and a Spotify login:
hermes plugins install spotifythenhermes spotify login - Spotify Premium for click-to-seek (reading playback works on any account)
Install
hermes plugins install amitamit10/hermes-lyrics
hermes plugins enable hermes-lyrics
Restart Hermes Desktop; Lyrics appears in the sidebar.
How it works
| Folder | Runs in | What it does |
|---|---|---|
desktop/plugin.js | Hermes Desktop | The Lyrics page (SDK only: @hermes/plugin-sdk, react) |
dashboard/plugin_api.py | Hermes backend | /now, /lyrics, /seek under /api/plugins/hermes-lyrics/ |
What this plugin touches
- Network: the Spotify Web API through the official
spotifyplugin's client
(it never reads tokens orauth.jsonitself), and the public
LRCLIB API (lrclib.net/api/getand/api/search) with the
track title, artist, album and length of the current song. No API key. - Spotify writes: only a seek, when you click a lyric line.
- Local data: the sync offset, in Desktop plugin storage. Lyrics are cached in
memory only. - No shell commands, no background processes beyond the page's 2 s poll (only while
the page is open), no telemetry.
License
MIT. Lyrics are provided by LRCLIB.
README from the reviewed commit 12c318d; it updates when the author re-pins.

amitamit10