Encore un nouveau WM : Xmonad

Ça va tourner à la monomanie : je viens encore de finir de configurer un nouveau window manager. Après avoir grogné sur les divers plantages de wmii (jamais pris le temps d’élucider) et l’instabilité pathologique de la configuration d’Awesome (celui-là j’y reviendrai ptêt dans un an ou deux quand la conf aura fini de péter à chaque update – c’est sérieusement pénible), me voici sous Xmonad. Pas grand chose à en dire : c’est un tiling window manager – j’y ai goûté, je ne veux rien d’autre. Particularité amusante : il est écrit en Haskell. Le peu que j’ai fait d’Haskell, j’aimais bien, faudra que je m’y remette à l’occasion 😉

Donc, j’ai installé sur mon Arch (et l’ubuntu du laptop) xmonad (attention, sous Arch au moins, les dépendances me semblent un peu calculées à la hache, il installe tout Haskell et tout le bordel qui va avec, pour un total de 500M sur disque…), trayer (pour avoir une tite zone de notif, c’est souvent pratique) et xmobar, pour avoir une barre d’infos.

Ensuite, la config :

/home/isa/.xmonad/xmonad.hs :

 import XMonad import XMonad.Hooks.ManageDocks import XMonad.Hooks.EwmhDesktops import XMonad.Layout.NoBorders import XMonad.Util.Run(spawnPipe) import XMonad.Hooks.DynamicLog import System.IO import qualified Data.Map as M import qualified XMonad.StackSet as W import Data.Bits ((.|.)) main = do 	xmproc <- spawnPipe "/usr/bin/xmobar /home/isa/.xmobarrc" 	xmonad $ defaultConfig {         terminal = "xterm -fg white -bg black -font -*-terminus-medium-r-*-*-20-*-*-*-*-*-iso10646-1 -u8",         modMask = mod4Mask,         keys = c -> mykeys c `M.union` keys defaultConfig c,         manageHook = manageDocks <+> manageHook defaultConfig,         logHook = dynamicLogWithPP $ xmobarPP                         { ppOutput = hPutStrLn xmproc                         , ppTitle = xmobarColor "green" "" . shorten 50                         }, 	layoutHook = smartBorders $ ewmhDesktopsLayout $ avoidStruts $ layoutHook defaultConfig,         workspaces = map show [1..9],         focusedBorderColor = "#729fcf",         normalBorderColor = "#aaaaaa",         borderWidth = 2 } where         mykeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $                 [((modMask, xK_b), sendMessage ToggleStruts),                  ((modMask, xK_semicolon), sendMessage (IncMasterN (-1)))]                 ++                 [((m .|. modMask, k), windows $ f i)                     | (i, k) <- zip (XMonad.workspaces conf) [0x22,0xAB,0xBB,0x28,0x29,0x40,0x2B,0x2D,0x2F],                     (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] 

ATTENTION c’est une config pour clavier bépoè : ça se voit à la ligne 0x22,0xAB,0xBB,0x28,0x29,0x40,0x2B,0x2D,0x2F qui définit le mapping des bureaux (c’est les codes hexa de la rangée de « chiffres », soit « «»()@+-/).

Le .xmobarrc, assez minimal :

 Config { font = "-misc-fixed-*-*-*-*-15-*-*-*-*-*-*-*"        , bgColor = "black"        , fgColor = "grey"        , position = TopW L 90        , lowerOnStart = True        , commands = [ Run Date "%a %b %_d %Y %H:%M:%S" "date" 10 		    , Run StdinReader                     ]        , sepChar = "%"        , alignSep = "}{"        , template = "%StdinReader% }{ <fc=#ee9a00>%date%</fc>"        } 

J’ai bricolé un peu le /usr/share/xsessions/xmonad.desktop pour qu’il appelle un xmonad.script plutôt que directement xmonad. Le script xmonad.script ressemble à ça :

 trayer --edge top --align right --SetDockType true --SetPartialStrut true   --expand true --width 10 --transparent true --tint 0x000000 --height 19 & xsetbg -center -border black /home/isa/screen.jpg exec xmonad 

(on remarquera que j’ai maintenant même un fond d’écran, le luxe absolu !). Bon, et niveau explications, la conf en question est très largement inspirée de celle de John Goerzen, documentée ici.

Voilàààààààà !

2 commentaires sur « Encore un nouveau WM : Xmonad »

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s