CMUS++
Kleiner, schneller und leistungsstarker Konsolen-Musikplayer, geschrieben in C++17
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_PICTUREin Vorbis-Kommentaren - Fallback:
cover.jpg,cover.png,folder.jpgusw. 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
.lrcneben dem Lied (z. B.song.mp3→song.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 lineEs 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.
| Taste | Aktion |
|---|---|
| ↑ / ↓ (oder k/j) | Liste navigieren |
| Enter | Abspielen / Ordner betreten |
| Leertaste | Pause / Fortsetzen |
| ← / → (oder h) | 5s zurück / 5s vor (im Browser: eine Ebene höher) |
| n / p | Nächstes / vorheriges Lied |
| + / - | Lautstärke erhöhen / verringern |
| s | Shuffle umschalten |
| r | Wiederholung umschalten |
| l | Liedtexte anzeigen/ausblenden (.lrc oder in Tags eingebettet) im Vollbild |
| / | Ein Lied im aktuellen Ordner suchen (tippen zum Filtern, Enter zum Abspielen) |
| t | Farbtheme ändern |
| o | Dateibrowser öffnen |
| a | Informationen anzeigen (Über) |
| q | Beenden |
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 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):
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_64Es 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:
chmod +x bootstrap.sh
./bootstrap.sh
./cmusppNixOS
Füge das Paket aus einem Flake hinzu:
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.