In diesem Artikel
Ein Fenster öffnen, mit einer Taste daneben arbeiten und ohne Maus zwischen Anwendungen wechseln: Das ist der Einstieg in XMonad. Mein kleines Debian-X11-Beispiel zeigt die wichtigsten Teile in einer überschaubaren xmonad.hs. Du musst dafür kein komplettes Haskell-Projekt verstehen.
Wir lesen die Datei abschnittsweise und ändern anschließend nur eine Rahmenfarbe. Voraussetzung für die Übung sind eine funktionierende XMonad-Sitzung, die benötigten Haskell-Bibliotheken und Zugriff auf die aktive Konfigurationsdatei. Die Installation des gesamten Desktops ist ein eigener Schritt; Gruvnode beschreibt meinen fertig eingerichteten Laptop.
Was übernimmt XMonad?
XMonad ist ein Window Manager für X11. Er entscheidet über Position, Größe und Fokus von Fenstern. Ein Layout teilt den Bildschirm automatisch auf. Ein vollständiger Desktop besteht zusätzlich aus Terminal, Programmstarter, Audio, Netzwerk und gegebenenfalls einer Statusleiste.
In diesem Beispiel sind Kitty, dmenu und feh solche Begleiter. Sie sind eigenständige Programme. Eine Zeile, die Kitty startet, installiert Kitty nicht. Anders als bei einem integrierten Desktop werden viele dieser Bausteine ausdrücklich ausgewählt. Für die Wayland-Variante folgt der Sway-Einstieg.
Wo liegt die Datei und wie beginnt sie?
XMonad unterstützt unter anderem ~/.config/xmonad/xmonad.hs, das ältere ~/.xmonad/xmonad.hs und eigens konfigurierte Verzeichnisse. Prüfe zuerst deinen bestehenden Aufbau. Die Sicherungsbefehle weiter unten verwenden den üblichen XDG-Pfad; bei einem anderen aktiven Pfad passt du beide Dateinamen an.
import-Zeilen laden Funktionen aus Bibliotheken. Darunter stellt main die Konfiguration zusammen. Mein Beispiel baut auf def, den Standardwerten von XMonad, auf und ersetzt einzelne Felder:
{ terminal = "kitty"
, modMask = mod4Mask
, borderWidth = 2
, focusedBorderColor = "#89b4fa"
, normalBorderColor = "#1e1e2e"
, layoutHook = myLayout
, manageHook = myManageHook
, startupHook = myStartupHook
}
Das ist ein Ausschnitt aus dem bestehenden def-Block, keine vollständige Datei. mod4Mask steht hier für Super, meistens die Windows-Taste. Die Funktionen myLayout, myManageHook und myStartupHook sind weiter unten definiert. Dadurch bleiben die Themen voneinander lesbar.
Tall und Full: Was bedeuten die Zahlen?
Die veröffentlichte Datei definiert diese Layoutfolge:
myLayout =
smartBorders
$ spacingWithEdge 6
$ Tall 1 (3 / 100) (1 / 2)
||| Full
Tall hat einen Hauptbereich und einen Bereich für weitere Fenster. Die 1 legt ein Fenster im Hauptbereich fest. 3 / 100 ist die Schrittweite beim Ändern seiner Breite; 1 / 2 ist der anfängliche Anteil am Bildschirm. ||| verbindet auswählbare Layouts.
spacingWithEdge 6 ergänzt Abstände, smartBorders passt Rahmen situationsabhängig an. Full zeigt im Layout ein Fenster groß an. Der echte Vollbildmodus einer Anwendung wird zusätzlich über die Fullscreen-Hooks behandelt; beide Begriffe sind nicht in jeder Situation dasselbe.
Die wichtigsten Tastenkürzel in meiner Datei
additionalKeysP ergänzt beziehungsweise überschreibt Tastenkürzel. M bezeichnet den gewählten Modifikator, S Shift. Die tatsächlichen Belegungen im Quellcode lauten:
| Tasten | Aktion |
|---|---|
| Super + Enter | Kitty starten |
| Super + D | dmenu öffnen |
| Super + J / K | Fokus zwischen Fenstern wechseln |
| Super + Shift + J / K | Fenster in der Anordnung vertauschen |
| Super + H / L | Hauptbereich schmaler oder breiter machen |
| Super + Leertaste | Zum nächsten Layout wechseln |
| Super + Q | Das fokussierte Fenster schließen |
| Super + Shift + R | Konfiguration kompilieren und bei Erfolg neu laden |
Super + Q ist hier ausdrücklich zum Schließen belegt. Verlasse dich bei einer eigenen Konfiguration auf deren Belegung und nicht auf die Standardtasten aus einem anderen Tutorial. Super + Shift + Q beendet die XMonad-Sitzung; sichere offene Arbeit vorher.
Was machen die Hooks?
layoutHook wählt die Anordnung. manageHook behandelt neue Fenster; mein kurzer Aufbau lässt erkannte Vollbildfenster frei über die Fläche gehen. startupHook führt Aktionen beim Start aus. Hier setzt spawnOnce ein Hintergrundbild mit feh.
Der Bildpfad muss bei dir existieren. Gleiches gilt für gestartete Anwendungen wie Chrome sowie die Helfer für Lautstärke und Helligkeit. Meine Datei verwendet dafür pamixer und brightnessctl. Auf Gruvnode wird Lautstärke dagegen mit wpctl gesteuert.
ewmh und ewmhFullscreen ergänzen die Zusammenarbeit mit Anwendungen, die entsprechende Desktop- und Vollbildinformationen erwarten. Die zusätzliche Zeile setWMName "LG3D" ist eine persönliche Kompatibilitätseinstellung; sie ist kein allgemeiner Nachweis dafür, dass ein beliebiges Wine- oder Proton-Problem damit behoben wird.
Übung: Eine Rahmenfarbe ändern
Sichere die aktive Datei. Dieser Befehl verwendet den XDG-Standardpfad und bewahrt eine bereits vorhandene Sicherung nummeriert auf:
cp -a --backup=numbered ~/.config/xmonad/xmonad.hs ~/.config/xmonad/xmonad.hs.before-tutorial
Ändere im vorhandenen Block nur focusedBorderColor, etwa von Blau zu Grün:
, focusedBorderColor = "#93dfc1"
Lass Kommas und Anführungszeichen stehen. Prüfe die Datei zuerst, ohne die laufende Sitzung neu zu laden:
xmonad --recompile
Bei einem Compilerfehler lies die genannte Zeile und korrigiere sie. Typische Ursachen sind ein fehlendes Komma, ein unbekannter Name oder eine nicht installierte Bibliothek. Erst nach erfolgreicher Kompilierung folgt:
xmonad --restart
Öffne zwei Fenster im Tall-Layout und wechsle den Fokus mit Super + J oder K. Der sichtbare Rahmen des fokussierten Fensters sollte die neue Farbe haben. Bei einem einzelnen Fenster oder Full können die intelligenten Rahmen ausgeblendet sein.
Zurück zur bisherigen Konfiguration
Wenn du nur die Übung zurücknehmen willst, setze den Farbwert zurück. Alternativ kopiere die gesicherte Datei zurück, sofern du keine späteren Änderungen verlieren würdest:
cp -a ~/.config/xmonad/xmonad.hs.before-tutorial ~/.config/xmonad/xmonad.hs
Kompiliere die wiederhergestellte Datei erneut:
xmonad --recompile
Starte XMonad nach erfolgreicher Prüfung neu:
xmonad --restart
Arbeite zunächst an einer einzigen Einstellung. Wenn Farbe, Layout, Autostart und Bibliotheken gleichzeitig geändert werden, lässt sich ein Fehler deutlich schlechter eingrenzen.
Lokale Konfiguration und nächster Schritt
Lesen, Bearbeiten und Kompilieren dieser Datei erfordern keinen Upload. Paketinstallationen greifen auf Repositories zu; Browser und andere gestartete Programme haben ihre eigenen Datenwege. Tastenkürzel können persönliche Pfade enthalten: Prüfe sie, bevor du die Datei veröffentlichst.
Für den Alltag fehlen in dieser kleinen Datei bewusst viele Laptop-Bausteine. Der Gruvnode-Artikel verbindet XMonad mit Xmobar, Rofi, Audio und Netzwerk und erklärt den Installer für meinen aktuellen X1 Carbon.
Quellcode und Dokumentation
Belegungen und Ausschnitte wurden am 7. Oktober 2026 am Quellcode geprüft.