xmonad
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Xmonad 🇬🇧 ist ein in Haskell geschriebener Fenstermanager, der Tiling beherrscht. Laut eigenen Angaben ist xmonad einfach zu nutzen, flexibel und erweiterbar sowie besonders stabil.
Xmonad kann ohne eine Desktopumgebung genutzt werden. Es ist allerdings auch möglich, xmonad in GNOME, KDE, MATE, LXDE oder Xfce zu integrieren. Eine Kombination mit Unity ist jedoch nicht möglich.
Installation¶
Xmonad kann direkt aus den offiziellen Paketquellen installiert werden [1]:
xmonad (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install xmonad
Oder mit apturl installieren, Link: apt://xmonad
Bedienung¶
Nach der Installation kann xmonad bei der grafischen Anmeldung als Desktop ausgewählt werden.
Nach dem Start von xmonad, sieht man zunächst einen leeren Bildschirm, da keine Anwendungen automatisch gestartet werden. Programme lassen sich entweder über dmenu
(
Alt +
P ), gmrun
(
Alt +
⇧ +
P ) oder ein Terminal (
Alt +
⇧ +
⏎ ) starten[2]. Mit (
Alt +
⇧ +
Q ) kanndie aktuelle xmonad-Sitzung beendet werden.
Dabei ist zu beachten, dass
Alt der "mod key" ist, welcher über die Konfiguration beliebig gelegt werden kann. Häufig wird die
⌘ - bzw.
Windows -Taste gewählt, um keine Hotkeys von anderen Programmen zu überschreiben.
Nach dem Starten eines Programms, positioniert xmonad das Fenster automatisch basierend auf dem aktuellen Layout in dem aktuellen Workspace. Die Workspaces können über
Alt +
1 bis
Alt +
9 gewechselt werden. Das Umschalten des Layouts erfolgt über
Alt +
. Die voreingestellte Tastaturbelegung ist in der manpage von xmonad gelistet.
Xmonad hat eine eingebaute Xinerama-Unterstützung, sodass mehrere Bildschirme verwendet werden können. Dabei werden die einzelnen Bildschirme als getrennte Einheiten angesehen, die jeweils einen Workspace darstellen. So ist es bei zwei Bildschirmen beispielsweise möglich, auf dem ersten Bildschirm den Workspace 3 und auf dem zweiten Bildschirm den Workspace 8 anzuzeigen. Nun könnte unabhängig vom zweiten Bildschirm, auf dem ersten Bildschirm zu Workspace 2 gewechselt werden usw. Sollte ein Workspace gewählt werden, der bereits auf einem weiteren Bildschirm sichtbar ist, werden beide Workspaces getauscht.
Der Fokus zwischen den physikalischen Bildschirmen kann mit Alt + W (erster Bildschirm), Alt + E (zweiter Bildschirm) und Alt + R (dritter Bildschirm) gewechselt werden.
Alle Standard-Tastenkombination können auf dem xmonad cheat sheet 🇬🇧 eingesehen werden.
Konfiguration¶
Damit xmonad konfiguriert werden kann, muss zusätzlich das Paket libghc-xmonad-dev
installiert werden. Es empfiehlt sich außerdem das Paket libghc-xmonad-contrib-dev
zu installieren. Dieses beinhaltet die sogenannten "contrib" Module, welche zusätzliche Funktionen und Konfigurationsmöglichkeiten bereitstellen.
libghc-xmonad-dev
libghc-xmonad-contrib-dev
Befehl zum Installieren der Pakete:
sudo apt-get install libghc-xmonad-dev libghc-xmonad-contrib-dev
Oder mit apturl installieren, Link: apt://libghc-xmonad-dev,libghc-xmonad-contrib-dev
Grundsätzlich findet die Konfiguration über die Haskelldatei ~/.xmonad/xmonad.hs statt. Diese Datei kann beliebigen Haskellcode beinhalten, wodurch sich theoretisch die Möglichkeit ergibt, fast jede beliebige Funktion in xmonad zu integrieren.
Auf der xmonad Website werden dazu ein Konfigurationsleitfaden 🇬🇧 und ein Konfigurationsarchiv 🇬🇧, welches viele Beispielkonfigurationen beinhaltet, bereitgestellt.
Zusätzliche Programme¶
Xmonad ist ein reiner Fenstermanager. Daher werden bestimmte Programme, die man als Nutzer aus kompletten Desktopumgebungen wie Unity, Gnome oder KDE gewohnt ist, nicht bereitgestellt. Diese können jedoch zusätzlich installiert und beim Starten von xmonad durch einen Eintrag in der Konfigurationsdatei mit gestartet werden.
Statusleiste¶
Xmonad kann mit verschiedenen Programmen zusammenarbeiten. Häufig finden xmobar oder dzen Verwendung. Im Folgenden wird die Installation und Konfiguration von xmobar 🇬🇧 beschrieben.
Installation¶
Xmobar kann ebenfalls direkt aus den Quellen installiert werden. [1]
xmobar
Befehl zum Installieren der Pakete:
sudo apt-get install xmobar
Oder mit apturl installieren, Link: apt://xmobar
Konfiguration¶
Die Konfiguration erfolgt standardmäßig über die Datei ~/.xmobarrc. In dieser Datei werden sowohl das Aussehen und Verhalten der Statusleiste als auch die angezeigten Informationen festgelegt. Letzteres geschieht über das Laden von sogenannten System Monitor Plugins. Xmobar bringt bereits verschiedene Plugins, z.B. für die Anzeige von Wetterdaten, CPU Auslastung oder des Akkustatus mit. Zusätzlich können eigene Plugins entwickelt und eingebunden werden. Eine Beschreibung aller Plugins steht in der Dokumentation 🇬🇧 zur Verfügung. Dort ist auch eine Beispielkonfiguration 🇬🇧 verlinkt.
Damit xmobar beim Start von xmonad entsprechend gestartet wird und die richtigen Informationen angezeigt werden, muss die Konfiguration von xmonad angepasst werden. Es gibt verschiedene Wege dies zu erreichen. Ein einfachen aber dennoch flexibler Weg ist die Verwendung der "statusBar" Funktion innerhalb der "main" Funktion. Diese ist jedoch nur verfügbar, nachdem die xmonad Erweiterung xmonad-contrib installiert wurde.
In der gezeigten Konfiguration wird xmobar als Statusleiste definiert und über xmobarPP
werden default Pretty Printing
Werte gesetzt. Daraufhin wird die Tastenkombination Mod + b gesetzt, um zu steuern, ob die Statusleiste überdeckt werden soll oder nicht.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import XMonad import XMonad.Hooks.DynamicLog [...] main :: IO () main = xmonad =<< statusBar myBar myPP toggleStrutsKey myConfig myBar = "xmobar" myPP = xmobarPP toogleStrutsKey (XConfig {XMonad.modMask = modMask}) = (modMask, xK_b) myConfig = defaultConfig [...] |
System Tray¶
Xmonad kann mit verschiedenen System Tray Anwendungen genutzt werden. Hier wird beispielhaft die Installation und Konfiguration von stalonetray 🇬🇧 beschrieben.
Installation¶
Stalonetray kann direkt aus den Quellen installiert werden. [1]
stalonetray
Befehl zum Installieren der Pakete:
sudo apt-get install stalonetray
Oder mit apturl installieren, Link: apt://stalonetray
Konfiguration¶
Damit stalonetray beim Start von xmonad mit startet, kann ein neuer Eintrag in der xmonad-session-rc angelegt werden. Diese liegt standardmäßig in ~/.xmonad/xmonad-session-rc.
1 2 3 | [...] stalonetray & [...] |
Die eigentliche Konfiguration erfolgt durch die Datei ~/.stalonetrayrc. Alle Einträge folgen dem einfachen Muster {Option} {Wert}
.
Alle möglichen Optionen können auf der Man-Page oder in der Dokumentation 🇬🇧 nachgelesen werden.
Die Position von stalonetray auf dem Bildschirm wird absolut angegeben. Soll stalonetray auf oder neben einer Statusleiste platziert werden, sollte entsprechend darauf geachtet werden, dass die Positionen so angepasst werden, dass keine Informationen überdeckt werden.
Locking, Mounten von USB-Sticks etc.¶
Wie bereits erwähnt, stehen viele Funktionen, die von Desktopumgebungen mitgeliefert werden, unter xmonad nicht zur Verfügung, da es sich bei xmonad um einen reinen Fenstermanager handelt. Wird xmonad beispielsweise neben Unity installiert, kann für das Sperren des Bildschirms light-locker verwendet werden, um eine schöne Integration von xmonad zu erreichen. Außerdem kann Nautilus Funktionen wie das automatische Mounten von USB-Sticks übernehmen, da Nautilus bereits installiert sein sollte. Ansonsten lassen sich beide Programme direkt aus den Quellen installieren [1].
light-locker
nautilus
Befehl zum Installieren der Pakete:
sudo apt-get install light-locker nautilus
Oder mit apturl installieren, Link: apt://light-locker,nautilus
Nun müssen nur die folgenden Einträge in der ~/.xmonad/xmonad-session-rc ergänzt werden.
1 2 3 4 | [...] light-locker & nautilus --no-desktop & [...] |
Um den Bildschirm per Tastenkombination zu sperren, kann ein neues Keybinding definiert werden, welches den Befehl spawn "light-locker-command -l"
ausführt.
Links¶
xmonad 🇬🇧 - xmonad Projektseite
xmobar 🇬🇧 - xmobar Projektseite
stalonetray 🇬🇧 - stalonetray Projektseite