BM is a modern terminal music player written in Go with a responsive text-based user interface. It supports popular audio formats and combines playback controls with library browsing, playlist management, and fuzzy search.
The player can display album artwork using the Kitty, Sixel, and iTerm2 image protocols. It also integrates with Linux desktops through MPRIS2, media keys, and track change notifications.
This is free and open source software.
Installation
I opted for the manual installation method. Go is required to build BM, but it was already installed on my system.
First, clone the project’s GitHub repository:
$ git clone https://github.com/zyoung11/BM.git

Next, change into the newly created directory and build the application:
$ cd BM
$ go build -ldflags="-s -w" .
In Operation
BM supports the important audio formats, including FLAC, MP3, WAV, and OGG.
The interface is divided into three sections: the library pane, album artwork, and playlist. You can move between them with the Tab key or jump directly to a section by pressing 1, 2, or 3.
Library

The library offers directory browsing, a feature I particularly value in a music player. Fuzzy search helps locate music without having to enter an exact match.
Album art
BM displays album covers using the Kitty, Sixel, and iTerm2 image protocols. It also extracts colours from the album artwork and uses them to theme the user interface.

The program has a playback bar which is not showed in my screenshot to save space.
Playlist
The playlist pane provides access to the current playback queue and complements the library browser well.

Other Features
- Control playback, volume, seeking, and playback speed.
- Automatically switches the speaker sample rate for each track.
- Responsive terminal interface adapts to the available dimensions.
- Player, playlist, and music library pages.
- Browse directories and search the music library with fuzzy matching.
- Dynamic playlist management and playback history.
- Detects and marks unplayable audio files.
- MPRIS2 integration, desktop notifications, and media key support.
- Customisable key mappings, player icons, and playback modes.
- Automatically saves configuration and application state.
Summary
I really like music players that offer directory browsing, so BM immediately ticks an important box for me. Its clean interface is easy to navigate and adapts well to the available terminal dimensions. Album artwork also adds welcome visual appeal without detracting from the terminal-focused design.
BM is deliberately minimalist, so I am not clamouring for a long list of extra features. Nevertheless, there are some surprising omissions. Most notably, gapless playback is not supported. This is an important omission, and its inclusion would make the player more appealing for everyday listening.
The default keyboard shortcuts are somewhat unorthodox and take time to learn, although all key mappings can be customised in the configuration file.
BM is still at an early stage of development, but it is definitely one to watch.

Linux has a plethora of high quality terminal-based music players which are showcased in this roundup.
Website: github.com/zyoung11/BM
Support:
Developer: zyoung11
License: MIT License
BM is written in Go. Learn Go with our recommended free books and free tutorials.
Related Software
| Terminal-Based Music Players | |
|---|---|
| musikcube | Sublime audio engine, library, player and server written in C++ |
| tap | The lightest music player with gapless playback |
| Tizonia | Powerful cloud music player based on OpenMAX IL 1.2 written in C and C++ |
| cmus | Great set of features including the essential gapless playback |
| termusic | Music Player TUI written in Rust |
| kew | Music player written in C |
| spectrum | Simple and intuitive music player for tech enthusiasts |
| ncmpc | Frugal Music Player Daemon client |
| ncmpy | Music Player Daemon client |
| MOC | Designed to be powerful and easy to use |
| RMuP | Simple music player lacking gapless playback |
| Siren | Extremely frugal with system resources |
| grump | CLI audio player written in Go |
| Gomu | Another Go music player |
| mpvc | mpc-like control interface for mpv |
| RustPlayer | Audio and radio player written in Rust |
Read our verdict in the software roundup.
Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk. You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more. Discovered a useful open source Linux program that we haven’t covered yet? Let us know by completing this form. |

