Ç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àààààààà !
ça manque un peu de screenshot tout ça
Le screenshot : http://www.flickr.com/photos/ipalat…