[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] [:Windowmanager#Tiling:Tiling Windowmanager] }}} [[Inhaltsverzeichnis(2)]] [[Bild(xmonad-logo.png, 48, align=left)]] [http://xmonad.org/ Xmonad] {en} ist ein in [:Haskell:] geschriebener [:Fenstermanager:], der [:Fenstermanager#Tilingfaehige-Fenstermanager: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]: {{{#!vorlage Paketinstallation xmonad, universe }}} = 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` ([[Vorlage(Tasten, alt+p)]]), `gmrun` ([[Vorlage(Tasten, alt+shift+p)]]) oder ein Terminal ([[Vorlage(Tasten, alt+shift+enter)]]) starten[2]. Mit ([[Vorlage(Tasten, alt+shift+q)]]) kanndie aktuelle xmonad-Sitzung beendet werden. Dabei ist zu beachten, dass [[Vorlage(Tasten, alt)]] der "mod key" ist, welcher über die Konfiguration beliebig gelegt werden kann. Häufig wird die [[Vorlage(Tasten, cmd)]]- bzw. [[Vorlage(Tasten, 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 [[Vorlage(Tasten, alt+1)]] bis [[Vorlage(Tasten, alt+9)]] gewechselt werden. Das Umschalten des Layouts erfolgt über [[Vorlage(Tasten, alt+leer)]]. Die voreingestellte Tastaturbelegung ist in der [:man: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 [[Vorlage(Tasten, alt+w)]] (erster Bildschirm), [[Vorlage(Tasten, alt+e)]] (zweiter Bildschirm) und [[Vorlage(Tasten, alt+r)]] (dritter Bildschirm) gewechselt werden. Alle Standard-Tastenkombination können auf dem [https://wiki.haskell.org/wikiupload/b/b8/Xmbindings.png xmonad cheat sheet] {en} 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. {{{#!vorlage Paketinstallation 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 [https://wiki.haskell.org/Xmonad/Config_archive/John_Goerzen's_Configuration Konfigurationsleitfaden] {en} und ein [https://wiki.haskell.org/Xmonad/Config_archive Konfigurationsarchiv] {en}, 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 [https://robm.github.io/dzen/ dzen] Verwendung. Im Folgenden wird die Installation und Konfiguration von [http://projects.haskell.org/xmobar/ xmobar] {en} beschrieben. === Installation === Xmobar kann ebenfalls direkt aus den Quellen installiert werden. [1] {{{#!vorlage Paketinstallation 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 [http://projects.haskell.org/xmobar/ Dokumentation] {en} zur Verfügung. Dort ist auch eine [https://raw.githubusercontent.com/jaor/xmobar/master/examples/xmobar.config Beispielkonfiguration] {en} 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. {{{#!code haskell 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 [http://stalonetray.sourceforge.net/ stalonetray] {en} beschrieben. === Installation === Stalonetray kann direkt aus den Quellen installiert werden. [1] {{{#!vorlage Paketinstallation 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'''. {{{#!code bash [...] 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 [http://stalonetray.sourceforge.net/manpage.html Dokumentation] {en} 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 [https://github.com/the-cavalry/light-locker 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]. {{{#!vorlage Paketinstallation light-locker nautilus }}} Nun müssen nur die folgenden Einträge in der '''~/.xmonad/xmonad-session-rc''' ergänzt werden. {{{#!code bash [...] 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 = * [http://xmonad.org/ xmonad] {en} - xmonad Projektseite * [http://projects.haskell.org/xmobar/ xmobar] {en} - xmobar Projektseite * [http://stalonetray.sourceforge.net/ stalonetray] {en} - stalonetray Projektseite * [:Fenstermanager:] #tag: Desktop, Fenstermanager