Skip to content

CMUS++

Kleiner, schneller und leistungsstarker Konsolen-Musikplayer, geschrieben in C++17

LicenseLanguagePlatform

Repository besuchen

CMUS++ ist ein ultraleichter, tastaturgesteuerter Terminal-Musikplayer, geschrieben in C++17. Er ist blitzschnell, hat keine grafischen Abhängigkeiten und rendert ohne Flackern.

Funktionen

  • Formate: MP3, FLAC, WAV, OGG, OPUS, AIFF.
  • Albumcover: Eingebettete Cover für MP3, FLAC, OGG/OPUS sowie cover.jpg/cover.png-Dateien.
  • Songtexte: Synchronisierte .lrc-Dateien sowie in Tags eingebettete Liedtexte (USLT/LYRICS), 100 % offline.
  • Plattformübergreifend: Linux (ALSA), macOS (CoreAudio), Windows (WinMM).
  • Anpassbar: 86 integrierte Themes plus Unterstützung für benutzerdefinierte XML-Themes.
  • Schnell: Keine Ladezeiten, effiziente Dekodierung und flackerfreies Rendern.

Albumcover

CMUS++ extrahiert und zeigt Albumcover automatisch an:

  • MP3: APIC-Frame (ID3v2.2/2.3/2.4)
  • FLAC: METADATA_BLOCK_PICTURE
  • OGG / OPUS: METADATA_BLOCK_PICTURE in Vorbis-Kommentaren
  • Fallback: cover.jpg, cover.png, folder.jpg usw. im selben Verzeichnis

Kompatible Terminals

  • Kitty / WezTerm / ghostty / iTerm2: Native Bilder (Kitty-Protokoll)
  • Andere Terminals (Alacritty, GNOME usw.): ANSI-Halbblock-Rendering () mit True-Color

Songtexte

Drücke l im Player, um die Liedtexte im Vollbild anzuzeigen (blendet die Liste aus). 100 % offline, ohne Netzwerk oder externe Dienste. Die Liedtexte werden wie folgt aufgelöst:

  • Synchronisierte .lrc neben dem Lied (z. B. song.mp3song.lrc). Die aktuelle Zeile wird hervorgehoben und bewegt sich synchron zur Wiedergabe.
  • Eingebettete Liedtexte in den eigenen Tags der Datei (USLT-Frame in MP3, LYRICS-Feld in FLAC/OGG). Werden als statischer Text angezeigt und mit ↑/↓ navigiert.

Beispiel für das .lrc-Format:

[ti:Title]
[ar:Artist]
[00:12.50]First line
[00:24.00]Second line

Es unterstützt [mm:ss] / [mm:ss.xx]-Zeitstempel, mehrere Marker pro Zeile ([00:12][00:24]text) und das [offset:±ms]-Tag.

Steuerung

CMUS++ ist für die vollständige Bedienung ohne Maus konzipiert.

TasteAktion
↑ / ↓ (oder k/j)Liste navigieren
EnterAbspielen / Ordner betreten
LeertastePause / Fortsetzen
← / → (oder h)5s zurück / 5s vor (im Browser: eine Ebene höher)
n / pNächstes / vorheriges Lied
+ / -Lautstärke erhöhen / verringern
sShuffle umschalten
rWiederholung umschalten
lLiedtexte anzeigen/ausblenden (.lrc oder in Tags eingebettet) im Vollbild
/Ein Lied im aktuellen Ordner suchen (tippen zum Filtern, Enter zum Abspielen)
tFarbtheme ändern
oDateibrowser öffnen
aInformationen anzeigen (Über)
qBeenden

Benutzerdefinierte Themes

Drücke t in der App, um Themes zu wechseln. Du kannst eigene Themes erstellen, indem du .xml-Dateien im Ordner themes/ (neben der ausführbaren Datei) oder in ~/.config/cmuspp/themes/ hinzufügst.

Beispielstruktur (themes/my-theme.xml):

xml
<?xml version="1.0" encoding="UTF-8"?>
<theme name="My Custom Theme">
  <!-- Text colors (Bright -> Dark) -->
  <fg0 r="248" g="248" b="242"/> <fg1 r="215" g="210" b="195"/>
  <fg2 r="117" g="113" b="94"/>  <fg3 r="75"  g="71"  b="60"/>

  <!-- Accents -->
  <acc  r="166" g="226" b="46"/> <warn r="230" g="219" b="116"/>

  <!-- Backgrounds (bgr/bgg/bgb = background | fgr/fgg/fgb = text) -->
  <bghdr  bgr="39" bgg="40" bgb="34" fgr="102" fgg="217" fgb="239"/>
  <bgsel  bgr="73" bgg="72" bgb="62" fgr="248" fgg="248" fgb="242"/>
  <bgplay bgr="30" bgg="44" bgb="18" fgr="166" fgg="226" fgb="46"/>
  <bgstat bgr="29" bgg="29" bgb="24" fgr="117" fgg="113" fgb="94"/>
</theme>

Neue Themes werden automatisch erkannt, wenn die App neu gestartet wird.

Schnellstart

Lust es auszuprobieren? Lade die vorkompilierte Binärdatei vom v1.1.0-Release herunter (Linux x86_64):

sh
wget https://github.com/Ars-byte/cmuspp/releases/download/v1.1.0/cmuspp-linux-x86_64
chmod +x cmuspp-linux-x86_64
./cmuspp-linux-x86_64

Es benötigt den Ordner themes/ (aus dem Repository) neben der ausführbaren Datei.

Aus dem Quellcode bauen

Abhängigkeiten

Du benötigst einen C++-Compiler sowie die Bibliotheken libsndfile, libjpeg und libpng (plus ALSA unter Linux).

  • Ubuntu / Debian: sudo apt install g++ libsndfile1-dev libasound2-dev libjpeg-dev libpng-dev
  • Arch Linux: sudo pacman -S gcc libsndfile alsa-lib libjpeg-turbo libpng
  • macOS: brew install libsndfile jpeg libpng (erfordert Homebrew)

Kompilieren

Klone das Repository und verwende das enthaltene Auto-Build-Skript:

sh
chmod +x bootstrap.sh
./bootstrap.sh
./cmuspp

NixOS

Füge das Paket aus einem Flake hinzu:

nix
inputs = {
  my-pkgs.url = "github:mikuri12/my-lazy-nixos-pkgs";
};

{ inputs, pkgs, system, ... }:
{
  environment.systemPackages = [
    inputs.my-pkgs.packages.${system}.cmuspp
  ];
}

Oder verwende den direkten Befehl: nix profile add github:mikuri12/my-lazy-nixos-pkgs#cmuspp

Lizenz

MIT – fühle dich frei, den Code zu ändern und zu verwenden.

Veröffentlicht unter der BSD-3-Clause-Lizenz.