Configurare xmonad window manager con xmobar e trayer
Per referenza futura scrivo velocemente in questo post la mia configurazione di xmonad, un window manager scritto in haskell. Il principale vantaggio di xmonad è che, decidendo lui il posizionamento delle finestre, riduce al minimo l’utilizzo del mouse e massimizza l’uso della superficie dello schermo (comportamento molto comodo quando si lavora con un portatile).
Software
- xmonad (0.8) – il window manager
- xmobar (0.9) – una status bar per xmonad
- trayer (1.0) – piccola app che fornisce una systray
- feh (1.3.4) – per impostare l’immagine di sfondo
- gdm, kmix, network-manager, …
Installazione
Più o meno tutto il software si trova nei pacchetti delle maggiori distribuzioni (io ho usato ubuntu, credo fosse qualcosa come apt-get install xmonad libghc6-xmonad-contrib-dev libghc6-xmonad-dev dwm-tools
), se cosi’ non fosse l’installazione manuale è comunque semplice. Basta leggere il manuale.
Configurazione
Di seguito i file di configurazione dei vari software:
xmonad – ~/.xmonad/xmonad.hs
import XMonad import XMonad.Hooks.DynamicLog import XMonad.Hooks.ManageDocks import XMonad.Util.Run(spawnPipe) import XMonad.Util.EZConfig(additionalKeys) import System.IO myManageHook = composeAll [ className =? "Gimp" --> doFloat , className =? "Vncviewer" --> doFloat ] main = do xmproc <- spawnPipe "xmobar" xmonad $ defaultConfig { manageHook = manageDocks <+> myManageHook -- make sure to include myManageHook definition from above <+> manageHook defaultConfig , layoutHook = avoidStruts $ layoutHook defaultConfig , logHook = dynamicLogWithPP $ xmobarPP { ppOutput = hPutStrLn xmproc , ppTitle = xmobarColor "green" "" . shorten 50 } , modMask = mod4Mask -- Rebind Mod to the Windows key } `additionalKeys` [ ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") , ((0, xK_Print), spawn "scrot") ]
xmobar – ~/.xmobarrc
Config { font = "-misc-fixed-*-*-*-*-13-*-*-*-*-*-*-*" , bgColor = "black" , fgColor = "grey" , position = TopW L 85 , commands = [ Run Network "wlan0" ["-L","0","-H","32","--normal","green","--high","red"] 10 , Run Cpu ["-L","15","-H","50","--normal","green","--high","red"] 10 , Run Memory ["-t","Mem: %"] 10 , Run Swap [] 10 , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10 , Run StdinReader ] , sepChar = "%" , alignSep = "}{" , template = "%StdinReader% }{ %cpu% | %memory% * %swap% | %wlan0% | %date%" }
gdm – /usr/share/xsessions/xmonad.desktop
[Desktop Entry] Encoding=UTF-8 Name=XMonad Comment=Leightweight tiling window manager Exec=xmonad.start Icon=xmonad.png Type=XSession
notare che xmonad.start è uno script personalizzato.
xmonad.start – /usr/local/bin/xmonad.start
#!/bin/bash xrdb -merge .Xresources trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 15 --height 12 --transparent true --tint 0x000000 & gnome-screensaver gnome-settings-daemon if [ -x /usr/bin/gnome-power-manager ] ; then sleep 1 gnome-power-manager fi if [ -x /usr/bin/nm-applet ] ; then nm-applet --sm-disable & fi kmix --keepvisibility #feh --bg-scale /mnt/archivio/foto/2008-2009-dublino/2009-04-10-stefano/hapenny-desktop.jpg & exec xmonad
Alcune note:
- usando gnome-settings-daemon (per i tasti multimediali ed un sacco di altre cose moderne) non è necessario usare feh per lo sfondo.
Screenshots
Il desktop senza applicazioni (solo xmonad e trayer), l’immagine di sfondo è una fotografia di un ponte di Dublino fatta da Steve:
lo stesso desktop con un paio di applicazioni aperte:
When i run Xmonad from gdm3, it appear a message
debian Xsession:unable to launch xmonad.start
What’s wrong?