Terminal music player

Point it at ~/Music.
Press play.

No MPD. No daemon. No config file. One binary that reads your tags, draws your album art in the terminal, and keeps your playlists and layout between sessions.

Arch Linux yay -S ommp
Anywhere else cargo install ommp

Linux · Apache 2.0 · Source · crates.io · AUR

ommp playing a track: library on the left, queue in the middle, album art and track details on the right

Seven ways into the same library

The tab strip across the top is the whole navigation model. Each one is a different question about the same files.

Fast enough to forget about

Measured on this machine, not estimated. A library that takes a moment to open is a library you stop opening.

18 ms
to open a 5,000-track library
Tags are cached and re-read only when a file's timestamp or size changes. The first scan runs across every core.
0.3 ms
per frame at 50,000 tracks
Flat, not linear — the browse views are built once when the library loads, not on every redraw.
7 MB
one binary, three libraries
Links against alsa-lib, glibc and gcc-libs. Nothing to configure, nothing running in the background.

Find it while you type

Results narrow on every keystroke. Narrow further with a field, or by format.

  • artist:yorushika
  • album:elma
  • genre:rock
  • *.flac
The search overlay filtering a library down to fifty of fifty-two tracks

Keys where you expect them

Vim motions for the lists, media keys for the music. The mouse works too — click a tab, double-click a track, Ctrl-drag a border to resize.

  • SpacePlay / pause
  • n / NNext / previous
  • + / -Volume
  • s / rShuffle / repeat
  • 1–7Switch tab
  • TabCycle pane focus
  • Ctrl+SSearch
  • Ctrl+HEvery other key
The keybinding overlay, two columns covering playback and navigation

Two things to check first

A Nerd Font

The interface is built from Nerd Font icons. Without one they render as empty boxes. Install JetBrainsMono Nerd Font or similar and set it as your terminal font.

A graphics protocol, for album art

Cover art is read out of the audio file itself and drawn as a real image where the terminal supports it. ommp detects which protocol is available at startup — there is nothing to configure.

Kitty graphicsGhostty, Kitty, WezTerm, Konsole
Sixelfoot, WezTerm, xterm, Contour
iTerm2WezTerm, Konsole

Anything else falls back to block characters, which still shows the artwork — just coarser. GPU acceleration is unrelated: Alacritty is accelerated and supports none of these; xterm is not and supports Sixel.

Install

Arch Linux yay -S ommp
With Rust installed cargo install ommp
From source git clone https://github.com/sqzer-x/ommp

Then put some music in ~/Music and run ommp.