XMonad & X11

XMonad verstehen: Meine xmonad.hs Schritt für Schritt

Dein Desktop, deine lokale Datei

Die Konfiguration wird auf deinem Rechner kompiliert. Programme, die du damit startest, behalten ihre eigenen Netzwerk- und Datenschutzeinstellungen.

In diesem Artikel
  1. Was übernimmt XMonad?
  2. Wo liegt die Datei und wie beginnt sie?
  3. Tall und Full: Was bedeuten die Zahlen?
  4. Die wichtigsten Tastenkürzel in meiner Datei
  5. Was machen die Hooks?
  6. Übung: Eine Rahmenfarbe ändern
  7. Zurück zur bisherigen Konfiguration
  8. Lokale Konfiguration und nächster Schritt
  9. Quellcode und Dokumentation

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:

TastenAktion
Super + EnterKitty starten
Super + Ddmenu öffnen
Super + J / KFokus zwischen Fenstern wechseln
Super + Shift + J / KFenster in der Anordnung vertauschen
Super + H / LHauptbereich schmaler oder breiter machen
Super + LeertasteZum nächsten Layout wechseln
Super + QDas fokussierte Fenster schließen
Super + Shift + RKonfiguration 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.