Herbstluftwm
An diesem Wochenende habe ich meine ersten Erfahrungen mit dem Fenstermanager herbstluftwm unter Linux gesammelt.
herbstluftwm is a manual tiling window manager for the X window system.
Ein tiling window manager ist ein Fenstermanagern, der Fenster von Anwendungen automatisch anhand von Layouts auf dem Bildschirm platziert. Die dargestellten Fenster überlappen sich nicht und füllen den kompletten Bereich des Bildschirms aus. Tiling window manager werden für gewöhnlich über Tastenkürzel bedient, durch welche die Fenster dann im Layout verschoben, vergrößert und geschlossen werden können. Herbstluftwm bildet hierbei keine Ausnahme: Außer dem ungewöhnlichen Namen bringt er die folgenden Eigenschaften mit:
Fensterverwaltung
Das Tiling-Konzept von Herbstluftwm basiert auf sogenannten Frames, welche mit Fenstern gefüllt werden können:
- Jeder Frame kann in Unter-Frames aufgeteilt werden.
- Ein neuer leerer Frame kann unter oder neben einem bestehenden Frame erstellt werden.
- Frames können vergrößert und verkleinert werden.
- Über die Tastatur kann der Anwender zwischen Frames und den Fenstern innerhalb der Frames wechseln
- Neue Fenster werden in dem gerade aktiven Frame erzeugt.
- Fenster sind in einem Frame wahlweise horizontal, vertikal oder übereinander angeordnet.
- Fenster können in und zwischen Frames verschoben werden.
Herbstluftwm bietet auch einen Floating-Modus, bei dem Fenster frei mit der Maus platziert werden können. Überlappungen von Fenstern sind dann möglich. Und es gibt noch den Modus pseudotile, der das Fenster zwar einem Frame zuordnet, dieses aber nicht ausdehnt, sondern in seiner Standardgröße belässt.
Bildschirmverwaltung
Ein Monitor ist in herbstluftwm ein abstrakter Begriff und definiert nur einen rechteckigen Bereich in dem genau ein Tag (virtueller Desktop) dargestellt wird. Die Anzahl der Monitore und Tags wird im Konfigurationsskript festgelegt. Als Standard gibt es einen großen Monitor, der den ganzen Bildschirmbereich ausfüllt und ein Tag.
Konfiguration
Herbstluftwm wird über ein bash-Skript autostart im Verzeichnis
~/.config/herbstluftwm
konfiguriert. Darin wird der Befehl herbstclient
verwendet, um die Eigenschaften der Fenstermanagers zu definieren - Verhalten/Fenster-Regeln, Tastenkürzel, Aussehen und Konfiguration der Bildschirme.
Über Regeln lässt sich das Verhalten von Fenstertypen oder einzelner Anwendungen anpassen. Sollen Dialogfenster in der Mitte des Bildschirms über anderen Fenstern dargestellt werden, so definiert man folgende Regel:
herbstclient rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
floatplacement=center
Tastenkürzel können einer Funktion des Fenstermanagers oder auch zum Starten externer Anwendungen verwendet werden:
herbstclient keybind $Mod-Shift-q quit
herbstclient keybind $Mod-w spawn rofi -show window
Die $Mod-Taste ist der Alt-Taste zugeordnet, aber dies kann geändert werden.
Sonstiges
Herbstluftwm wurde in C++ geschrieben und kommt mit nur minimalen Abhängigkeiten zu anderen Libraries aus (vgl. Dependencies). Der Quellcode ist unter https://github.com/herbstluftwm/herbstluftwm verfügbar. Herbstluftwm ist unter der Simplified BSD License lizenziert.
Meine Zeit mit Herbstluftwm
Herbstluftwm ist sehr minimalistisch. Die Fensterverwaltung basiert auf wenigen Konzepten, die konsequent zu verwenden sind. Es gibt keinerlei Popup- oder Anwendungsmenüs und ein Status- oder Taskleiste bringt der Fenstermanager auch nicht mit.

herbstluftwm mit Polybar und zwei Fenstern
Ich habe daher als Statusleiste Polybar verwendet, die sehr gut mit herbstluftwm zusammenarbeitet. Den Launcher Rofi habe ich zum Starten von Programmen und zur Fensterauswahl verwendet. Der Aufruf von Rofi erfolgt über Tastenkombinationen, die ich im autostart-Skript definiert habe. Der Bildschirmhintergrund wurde über das Programm Nitrogen konfiguriert.
Für Polybar musste ich am oberen Rand des Bildschirms noch Platz schaffen:
herbstclient pad 0 31 0 0 0
Als $Mod-Taste verwende ich die Windows-Taste:
Mod=Mod4
Mit der Konfiguration hatte ich ein kleineres Problem: das Ändern des Standardlayouts innerhalb von Frames (vgl. default_frame_layout
). Neue Fenster sollten nebeneinander und nicht untereinander angeordnet werden. Ich habe schließlich eine Lösung im Arch-Forum gefunden1. Um das Verhalten im ersten Tag zu ändern, musste zusätzlich der Befehl
herbstclient load ${TAG_NAMES[0]} '(clients horizontal:0)'
aufgerufen werden.
Mein Fazit
Herbstluftwm hinterlies bei mir insgesamt einen guten Eindruck. Gut gefallen hat mir der Pseudotile-Modus, das Frame-Konzept und die einfache Konfiguration.