Kew: A Terminal Music Player That Actually Respects Your Flow
If you spend most of your day in the terminal, switching to a GUI music player feels like breaking your flow. But most terminal players either lack gapless playback (that awkward silence between songs? Yeah, it's avoidable) or force you to manually curate every playlist. That's where kew steps in.
Built with performance in mind, kew is a lightweight music player that runs entirely in your terminal. It handles gapless playback natively, and its standout trick is auto-generating playlists based on your listening patterns. Whether you're deep in a coding session or just need background tunes, kew aims to be the player that stays out of your way.
What It Does
Kew is a terminal-based music player written in C++. It supports common audio formats (MP3, FLAC, OGG, WAV, and more) and indexes your local music library. From the command line, you can:
- Play, pause, skip, and manage tracks
- Search your library by artist, album, or genre
- Generate playlists automatically using track metadata or listening history
- Control volume and seek within tracks
The interface is minimal but functional a simple ncurses-driven UI with a playlist view, track info, and playback controls. No bloat, no fluff.
Why It's Cool
Gapless playback done right. This is a big one. If you listen to concept albums, live recordings, or classical music, silence between tracks is jarring. Kew handles gapless playback without any extra configuration, and it doesn't rely on file format hacks. It just works.
Auto-generated playlists are surprisingly smart. Instead of forcing you to build playlists from scratch, kew can analyze your library and create lists based on things like tempo, genre, or even "songs you haven't played in a while." It's not AI overkill, it's just using simple heuristics that actually feel useful.
Terminal native. No X11 dependencies, no Wayland quirks, no Electron runtime. You can run it over SSH, in a tmux pane, or on a headless server with just a terminal. For devs who live in the shell, this is a huge win.
Lightweight and fast. The C++ codebase is lean. Memory usage is minimal, and playback starts almost instantly, even with large libraries.
How to Try It
Kew is available on GitHub under the MIT license. Installation is straightforward:
# Clone the repo
git clone https://github.com/ravachol/kew.git
cd kew
# Build (requires CMake and a C++17 compiler)
mkdir build && cd build
cmake ..
make
# Run
./kew
You'll need a supported audio backend (ALSA, PulseAudio, or PipeWire) and a media library to scan. The README includes details on configuration and keybindings. If you're on Arch, there's also an AUR package: kew-git.
Final Thoughts
Kew isn't trying to reinvent the wheel. It's a focused tool that solves a specific problem: keeping your music flowing without breaking your terminal workflow. The gapless playback alone is worth a look if you've ever been annoyed by the silence between tracks in other CLI players. The auto-generated playlists are a nice bonus, especially for people with large libraries who just want something to play without thinking.
Is it as polished as spotify-tui or cmus? Not yet, but it's actively maintained and the core features work solidly. If you're a terminal junkie who values gapless playback and hates manual playlist management, give kew a spin. It might just stick.
Found this project on @githubprojects