I built Waves because I wanted a music player that fits my workflow. I spend most of my day in the terminal, and switching to a GUI app to manage music always felt jarring. I also wanted something that respects my local library rather than pushing streaming services.
What makes it different:
- Full keyboard-driven navigation with vim-style bindings (hjkl, /, g/G)
- SQLite FTS5 for instant full-text search across your library
- Radio mode: when you run out of tracks, it uses Last.fm's similar artists API to find related music from your own library and keeps playing
- Soulseek integration via slskd for downloading, with MusicBrainz tagging and file renaming
- Mouse support for those who want it
- State persistence: queue, navigation position, everything saved between sessions
Tech stack: Go, Bubble Tea (TUI framework), Beep (audio), SQLite. Supports MP3 and FLAC.
Install: `go install github.com/llehouerou/waves@latest` or `yay -S waves-bin` on Arch.
Press `?` for keybindings help once you're in.