#sesh

Musik im Terminal: cava, roon-tui und ncmpcpp — deklarativ, monochrom, vim-navigiert

Drei Musik-Tools, ein Flake: cava visualisiert den Sound in einem 8-stufigen Orange-Gradienten mit gepatchten ▄-Blöcken, roon-tui steuert den Roon Core mit vim-Keybindings und einem monochromen Theme, und ncmpcpp ist der MPD-Fallback mit derselben Navigation. Dazu ein Overlay, das roon-tuis hartkodierte Farben und Keybindings per sed/substituteInPlace umschreibt, ein RoonBridge- und squeezelite-Setup, das sowohl bit-perfektes ALSA als auch PipeWire für cava bedient, und ein Musik-Profil, das zur Build-Zeit zwischen Roon und MPD wählt. Alles in einer tmux-Session, die cava im oberen Split und den Player darunter startet.

Musik auf der Workstation ist für mich kein Nebenbei — sie läuft den ganzen Tag, und das Setup soll sich so anfühlen wie der Rest des Desktops: deklarativ, monochrom mit orangen Akzenten, vim-navigiert. Drei Tools teilen sich die Bühne: cava visualisiert den Sound, roon-tui steuert den Roon Core, und ncmpcpp ist der MPD-Fallback, wenn Roon nicht läuft. Alle drei leben in fr0st , alle drei sind per Overlay auf dasselbe Theme und dieselben Keybindings gepatcht, und alle drei starten in einer tmux-Session , die cava im oberen Split und den Player darunter aufbaut.

cava (oben, ▄-Blöcke im Orange-Gradient) und roon-tui (unten, monochrom mit orangen Akzenten und ▮-Progressbar) in einer tmux-Session auf Workspace 9.

Ein Tastendruck, ein fertiger Workspace — tmux, sesh und ein Hyprland-Prompt

tmux gibt mir persistente Sessions, sesh macht sie zu einem deklarativen Session-Manager — und ein Hyprland-Keybind öffnet sie per rofi. Vordefinierte Projekt-Layouts in Nix, ein Window-Pool-Trick, der wiederholte Fensternamen erlaubt, eine Wildcard-Vorlage für jeden Projektordner, und SUPER+s als Tür ins Ganze. Wie aus „erst mal die Panes aufbauen" ein einziger Tastendruck wurde.

Jedes Projekt, das ich anfasse, will dieselbe Bühne: mehrere Shell Fenster, vielleicht ein AI-Agent, daneben Git und Datei-Browser, vielleicht noch eine Live-Preview. Das von Hand aufzubauen — tmux new, splitten, cd, Tools starten — dauert jedes Mal eine Minute, die ich nicht habe. Also habe ich es in fr0st deklariert: tmux für die persistente Bühne, sesh als Session-Manager darüber, und einen Hyprland-Keybind, der das Ganze per rofi aufruft. Ein Tastendruck, ein fertiger Workspace.