xmonad (Français)
XMonad est un gestionnaire de fenêtres dynamique pour le serveur Xorg. Les fenêtres sont arrangées de façon à remplir l'écran sans perte d'espace et sont alors maximisées. Les fonctionnalités du gestionnaire de fenêtres sont accessibles par le clavier, la souris est optionnelle. XMonad est extensible en Haskell, permettant une configuration avancée.
XMonad est similaire à Ion, WMii et surtout à DWM, il prends en charge également le multihead, l'ajout d'extensions ou de modules écrits en haskell et la compilation à la volée. Il gère les fenêtres de vos applications grâce à un système d'étiquettes ("tags"), ressemblant aux "bureaux virtuels". Votre espace de travail est ainsi constitué d’étiquettes auxquelles sont attachées les fenêtres des applications. XMonad permet à l'aide d'un raccourci clavier d’attacher une fenêtre donnée à une étiquette donnée.
L'algorithme de disposition des fenêtres, les touches de raccourcis et d'autres extensions peuvent être écrits dans un fichier de configuration (xmonad.hs) par l'utilisateur. Les systèmes de disposition de fenêtres sont appliqués dynamiquement, et différents agencements peuvent être utilisés pour différents espaces de travail. "Xinerama" est totalement pris en charge, permettant aux fenêtres d'être utilisées sur plusieurs moniteurs.
Installation
Pour installer XMonad ainsi que ses extensions:
pacman -Syu xmonad xmonad-contrib
Lancement
Pour démarrer XMonad avec startx
, éditez le fichier ~/.xinitrc
, et ajoutez les lignes suivantes :
xsetroot -cursor_name left_ptr exec xmonad
Si XMonad vous envoie un message de ce type :
/home/user/.xmonad/xmonad-i386-linux: executeFile: does not exist ( No such file or directory )
Copiez un fichier de configuration xmonad.hs
dans le répertoire ~/.xmonad
puis réessayez. Le fichier de configuration xmonad.hs
par défaut doit se trouver dans /usr/share/xmonad-$num_ver/man/xmonad.hs
.
Configuration
XMonad utilise les paramètres du fichier de configuration ~/.xmonad/xmonad.hs
. Voici un exemple de base indiquant la largeur des bordures par défaut, le terminal par défaut, et certaines couleurs.
import XMonad main = xmonad $ defaultConfig { borderWidth = 2 , terminal = "urxvt" , normalBorderColor = "#cccccc" , focusedBorderColor = "#cd8b00" }
Vous pouvez trouver un exemple de fichier de configuration plus complet sur https://wiki.haskell.org/Xmonad .
Si vous voulez utiliser des extensions, vous aurez besoin d'installer le paquet xmonad-contrib. Pour ajouter une extension, il suffit de copier ces instructions dans le fichier de configuration principal de XMonad puis de taper Alt + Q
pour recharger la configuration. En cas d'erreur, vous aurez un message détaillé pour la corriger et dans ce cas la configuration retenue sera la précédente configuration valide. Un exemple avec l'extension
Grid.hs
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-} -- | -- Module : XMonad.Layout.Grid -- Copyright : (c) Lukas Mai -- License : BSD-style (see LICENSE) -- -- Maintainer : <l.mai@web.de> -- Stability : unstable -- Portability : unportable -- -- A simple layout that attempts to put all windows in a square grid. -- Instructions à copier dans xmonad.hs pour ajouter l'extension -- $usage -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- -- > import XMonad.Layout.Grid -- -- Then edit your @layoutHook@ by adding the Grid layout: -- -- > myLayouts = Grid ||| Full ||| etc.. -- > main = xmonad defaultConfig { layoutHook = myLayouts } -- -- For more detailed instructions on editing the layoutHook see: -- -- "XMonad.Doc.Extending#Editing_the_layout_hook" -- -- ...
Utilisation
DMenu
dmenu permet de lancer des applications, le raccourci clavier par défaut est Alt + P
. Installez dmenu.
Pour le lancer, éditez le fichier ~/.xinitrc
, et ajoutez la ligne suivante :
((modMask, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"") -- %! Launch dmenu
Gaps
Gaps est une barre de lancement rapide écrit en Python. Le paquet pypanel-gapsAUR[broken link: package not found] se trouve sur AUR.
Pour avoir une barre de lancement en haut de 15 pixels par exemple, éditez son fichier de configuration de la manière suivante:
defaultGaps :: [(Int,Int,Int,Int)] defaultGaps = [(15,0,0,0)] -- 15 for default dzen font
Workspaces
On indique ici le nombre d'espaces de travail que l'on désire et éventuellement leurs noms:
workspaces :: [WorkspaceId] workspaces = map show [1 .. 9 :: Int] -- A tagging example: -- > workspaces = ["main", "web", "edit", "media", "im", "other"]
Switcher
Pour changer d'espace de travail, j'ai dû modifier un peu la syntaxe afin de l'adapter à ma configuration. Sur les autres exemple la syntaxe ne fonctionnait pas. Ajoutez dans votre fichier de configuration principal ~/.xmonad/xmonad.hs
, juste en dessous de "myKeys" ou "Keys" selon les configurations, les lignes suivantes :
-- mod-[1..9], Switch to workspace N -- mod-shift-[1..9], Move client to workspace N -- [((modm .|. m, k), windows $ f i) | (i, k) <- zip myWorkspaces [xK_F1 .. xK_F6] , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
Il faut modifier dans la section ""main" la ligne ""workspaces = myWorkspaces" comme ceci :
main = do din <- spawnPipe statusBarCmd xmonad $ defaultConfig { borderWidth = 1 , normalBorderColor = "#444444" , focusedBorderColor = "#444444" , workspaces = myWorkspaces , terminal = "urxvtc" , modMask = mod1Mask , defaultGaps = [(14,0,0,0)] , manageHook = manageHook defaultConfig <+> myManageHook , logHook = dynamicLogWithPP $ myPP din , layoutHook = windowNavigation (tiled ||| Mirror tiled ||| noBorders (Full) ||| Grid ||| tabbed shrinkText defaultTConf) , keys = \c -> myKeys c `M.union` keys defaultConfig c , mouseBindings = \c -> myMouse c `M.union` mouseBindings defaultConfig c }
Adaptez en fonction de vos besoins les raccourcis clavier, par défaut:
- Alt + F1-F6 : Change d'espace de travail
- Shift + Alt + F1-F6 : Change la fenêtre active dans l'espace de travail 1 à 6
Utilisez xev
(xorg_xev[broken link: package not found]) pour attribuer vos raccourcis.
Divers
- dzen convient parfaitement comme barre d'état, mais aussi pour afficher des menus, contrôler MPD, etc...
- On peut combiner conky et dzen[broken link: package not found], le résultat est plutôt sympathique et très léger tout en affichant des icônes.