LinuxCommandLibrary

cmus

Play music from the command line

TLDR

Open cmus into the specified directory (this will become your new working directory)

$ cmus [path/to/directory]
copy

Add file/directory to library
$ <:>add [path/to/file_or_directory]
copy

Refresh the metadata of songs in the library
$ <:>update-cache
copy

Search for songs, albums, or artists
$ </>[something]
copy

Pause/unpause current song
$ <c>
copy

Toggle shuffle mode on/off
$ <s>
copy

Quit cmus
$ <q>
copy

SYNOPSIS

cmus [options] [file|directory|playlist]

PARAMETERS

--help
    Displays a brief help message and exits.

--version
    Outputs the cmus version information and exits.

--listen [ADDR]
    Starts cmus and listens for connections from cmus-remote clients. If ADDR is not specified, it listens on a default local socket. This is crucial for remote control or scripting.

--servername
    Specifies a unique server name for this cmus instance. Useful when running multiple cmus instances concurrently to differentiate them for cmus-remote.

[file|directory|playlist]
    One or more paths to audio files, directories to scan for music, or M3U/PLS playlist files. These items will be added to the library or queue upon startup.

DESCRIPTION

cmus is a small, fast, and powerful console music player for Unix-like operating systems. Designed for efficiency and minimal resource usage, it offers a purely text-based user interface, making it an excellent choice for users who prefer working in the terminal or on systems with limited graphical capabilities.

Its core philosophy revolves around keyboard-driven navigation and control, providing a highly responsive and fluid user experience once familiarized with its keybindings. cmus supports a wide array of audio formats, including MP3, Ogg Vorbis, FLAC, WavPack, Musepack, WAV, and more, leveraging various audio output plugins like ALSA, PulseAudio, OSS, and Sun Audio. It features gapless playback, replaygain support, and a robust library management system that organizes music in a tree-like hierarchy.

Users can create and manage playlists, apply filters, and customize nearly every aspect of the player, from keybindings and colors to file display formats. Its lightweight nature and powerful features make it a favorite among power users and terminal enthusiasts.

CAVEATS

cmus has a text-based user interface (TUI), which means it lacks graphical elements common in modern music players. All interactions are performed via keyboard shortcuts, which can have a steep learning curve for new users. Configuration is primarily done through text files (`~/.config/cmus/rc` and `~/.config/cmus/autosave`), requiring manual editing for advanced customization. While highly efficient, it does not offer built-in visualizers or direct streaming capabilities like some graphical players; however, external tools can sometimes bridge these gaps.

INTERACTIVE KEYBINDINGS

The primary method of interacting with cmus is through its extensive set of keyboard shortcuts. Users navigate different views (e.g., library, queue, playlists, settings) by pressing number keys (1-7), add files with `a`, play/pause with `p`, stop with `s`, and search with `/`. Mastering these bindings is essential for efficient use.

VIEWS AND MODES

cmus organizes its functionality into several distinct views, accessible by pressing numbers 1 through 7:

  • 1: Library (Artist/Album view)
  • 2: Library (Flat view)
  • 3: Play Queue
  • 4: Playlists
  • 5: File Browser
  • 6: Filters and Settings
  • 7: Help
Each view offers specific commands and display options tailored to its purpose.

CONFIGURATION FILES

cmus stores its main configuration in `~/.config/cmus/rc` and its auto-saved state (like current queue, library, and settings) in `~/.config/cmus/autosave`. These plain text files allow users to deeply customize keybindings, colors, column layouts, and various playback parameters.

HISTORY

cmus was initially developed by Timo Hirvonen, with its first public release around 2008. It was conceived as a lightweight, fast, and highly customizable music player that embraced the Unix philosophy of doing one thing well and doing it efficiently. From its inception, the focus has been on providing a robust and responsive terminal-based experience, prioritizing speed and keyboard control over graphical interfaces. It has maintained an active development community, continually evolving with new features, bug fixes, and support for modern audio technologies while retaining its core principles of minimalism and performance.

SEE ALSO

cmus-remote(1): The indispensable companion utility for controlling cmus instances from the command line or scripts., mpd(1): Music Player Daemon, another popular client-server architecture for console music playback., ncmpcpp(1): A popular feature-rich curses client for MPD., alsamixer(1): A terminal-based mixer often used to adjust system volume in conjunction with cmus when using ALSA output.

Copied to clipboard