Skip to content

dilmun/lyrfin

Repository files navigation

 lyrfin

A modern, keyboard-first terminal music player — local library, Spotify, radio, podcasts, synced lyrics, and a live visualizer, all in your terminal.

CI License: MIT Rust 1.96+ Sponsor


lyrfin — library, artist page, tracklist, queue and synced lyrics in one view

Everything in one view — and it follows your terminal's light or dark theme.

See more screenshots

Spotify Browse
Browse — genres and moods as a cover wall
Playlist
Playlists & search — keyboard-driven track lists
Visualizer
Visualizer — live FFT spectrum
Synced lyrics
Synced lyrics — karaoke and translation
Full-screen album art
Full-screen album art

Captured on Ghostty, which renders real inline album art.


Features

Library

  • Off-thread scanner with a binary cache for instant cold starts
  • Plays FLAC, MP3, AAC/M4A, OGG, and WAV (symphonia)
  • Fuzzy search, Miller-column browsing (Artists ▸ Albums ▸ Tracks), multi-key sort
  • Favorites, 0–5★ ratings, play counts, and smart lists
  • Cover-art grid — album & artist wall with real covers and online artist photos

Playback

  • symphonia → cpal engine on a dedicated thread with a lock-free ring buffer
  • 10-band graphic equalizer with a preamp and presets
  • Gapless, crossfade, ReplayGain, and time-stretched speed
  • Reorderable queue, repeat, and shuffle

Streaming & online

  • Spotify (Premium) via librespot, routed through lyrfin's own engine — the visualizer, volume, and speed all apply; browse, search, playlists, and likes
  • Internet radio — ~50k Radio Browser stations with search, filters, and favorites
  • Podcasts stream from their public RSS feeds

Lyrics & visuals

  • Synced .lrc (sidecar or embedded), with online fallback (LRCLIB, NetEase, JioSaavn)
  • Karaoke word-wipe, teleprompter, bilingual view, and machine translation
  • Live FFT visualizer with multiple modes and a waterfall history
  • Inline album art via Kitty, sixel, or iTerm2 — half-block fallback elsewhere

Interface

  • 7 instantly-switchable layouts; movable, dockable panes; responsive collapse
  • 13 themes with optional follow-the-system light/dark, plus custom TOML and an album-art accent
  • Full mouse support, rebindable keys, session restore, and listening stats
  • Built-in tag editor for a track or a whole album, with online auto-tagging

Install

Prebuilt binaries

Grab your platform's build from the Releases page — Linux x86-64, macOS (Intel & Apple Silicon), and Windows x86-64 — then:

tar xzf lyrfin-<target>.tar.gz
./lyrfin

Note

macOS Gatekeeper. The binaries aren't notarized, so clear the quarantine flag once: xattr -d com.apple.quarantine ./lyrfin

From source

Requires Rust 1.96+. On Linux, install ALSA headers first (sudo apt-get install libasound2-dev).

cargo install --git https://github.com/dilmun/lyrfin

Quick start

lyrfin                       # launch with your configured library
lyrfin ~/Music               # scan a folder for this session
lyrfin --theme cyberpunk     # start with a specific theme

Press ? for help, ; for settings, e for the equalizer, and 7 to connect Spotify.

Important

lyrfin is developed and tested on Ghostty. It targets common standards (truecolor, inline images, Unicode) and should work on other modern terminals, but they aren't officially verified yet.


Configuration

Config lives at ~/.config/lyrfin/config.toml (%APPDATA%\lyrfin on Windows), created with sensible defaults on first run. Most options are editable in-app via the settings popup (;).

theme        = "aurora"              # or: cyberpunk · glacier · monolith · <custom>
music_dirs   = ["/home/you/Music"]
volume       = 72                    # 0–100
gapless      = true
crossfade_ms = 0                     # 0 disables
album_art    = true                  # inline cover art

Full reference — every field, the theme format, and data paths — in docs/CONFIGURATION.md.


Keybindings

Essentials (all rebindable — full list in docs/KEYBINDINGS.md):

Key Action Key Action
Space Play / pause 17 Switch layout
n / p Next / previous / Search
/ Seek Tab Cycle pane focus
- / + Volume Enter Play / open
j / k Move down / up e Equalizer
s / r Shuffle / repeat t Cycle theme
f Favorite v Visualizer mode
. / , Rate up / down ; Settings
? Help q Quit

Roadmap

  • Broader terminal support (verified beyond Ghostty)
  • Workspace profiles — switchable config / layout / library sets
  • Scripting hooks (Lua or Rhai) for automation
  • User-defined custom panes

Full detail and shipped milestones in docs/ROADMAP.md.


Contributing

Contributions are welcome. See CONTRIBUTING.md for the workflow and conventions, and docs/ARCHITECTURE.md for the design (Event → Action → update → render).

cargo build --profile fast     # optimized, fast to rebuild — best for dev
cargo test                     # reducer + snapshot tests (headless)
cargo fmt --all --check        # formatting
cargo clippy --all-targets -- -D warnings   # lint

If lyrfin is useful to you, a sponsorship or a ⭐ helps it keep going.


License

MIT © 2026 dilmun.

lyrfin is an independent project and is not affiliated with or endorsed by Spotify, Apple, Deezer, or any other service it interoperates with. Built on ratatui, symphonia, cpal, librespot, lofty, nucleo, and rustfft — thank you to those projects.

About

A modern, keyboard-first terminal music player — local library, Spotify, radio, podcasts, synced lyrics, and a live visualizer.

Topics

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages