xmonad est un gestionnaire de fenêtres de la famille des "tiling windows manager". Sur un système Debian GNU/Linux, vous pouvez l'installer, ainsi que d'autres paquets logiciels utiles pour compiler ses propres configuration, avec la commande :
apt-get install xmonad ghc libghc-xmonad-dev libghc-xmonad-contrib-dev
Si vous n'êtes pas familier de xmonad et de sa configuration, vous souhaitez peut-être lire ces pages-là :
J'ai eu grandement besoin du Web pour écrire mes fichiers de configuration. Certaines pages ont été particulièrement utiles:
Voici une description de ma configuration xmonad. Cette description est également disponible (en anglais) dans le fichier README dans le dépôt GitHub.
Mod + shift + q et mod + q ouvre un menu "système" (Shutdown / Reboot / Exit / Lock / Restart XMonad)
Il est à noter que les commandes "Shutdown" et "Reboot" ne marcheront pas si l'utilisateur n'est pas autorisé à exécuter "sudo poweroff" et "sudo reboot" sans mot de passe. Pour que les utilisateurs soient autorisés à exécuter "sudo poweroff" et "sudo reboot" sans mot de passe, l'administrateur du système peut ajouter cette ligne dans le fichier /etc/sudoers (en utilisant visudo) :
ALL ALL=NOPASSWD: /sbin/poweroff, /sbin/reboot
A noter aussi que la commande "Lock" lance xtrlock et ne marchera donc pas si xtrlock n'est pas installé. Sur un système Debian GNU/Linux, vous pouvez l'installer avec cette commande :
apt-get install xtrlock
Les bureaux ont chacun un nom :
Certaines applications sont automatiquement déplacées vers des bureaux particuliers :
Au démarrage de xmonad, ou lors d'un redémarrage, le script .xmonad/hooks est exécuté avec l'argument "startup", ce qui déclenche le lancement de trois applications si elles sont installées sur le système et si elles ne sont pas déjà exécutées par l'utilisateur :
Comme déjà dit, Claws Mail et Firefox sont automatiquement déplacés vers des bureaux particuliers.
dclock est affiché en permanence dans le coin supérieur droit de l'écran et indique l'heure et la date. Le texte du fichier xmonad.hs fait l'hypothèse que l'écran a une largeur de 1920 pixels. Si votre écran a une largeur différente, vous aurez besoin de remplacer 1920 par la largeur en pixel de votre écran.
Sur un système Debian GNU/Linux, vous pouvez installer dclock avec la commande :
apt-get install dclock
Il est possible de neutraliser partiellement ou totalement le script .xmonad/hooks en définissant des variables d'environnement. Exécutez le script .xmonad/hooks avec l'option --help pour plus d'informations.
Il y a deux dispositions de fenêtre disponible dans chaque bureau. La disposition "colonne à largeur fixe" et la disposition "plein écran". Vous pouvez passer de l'une à l'autre avec Mod + espace. Il y a toutefois une exception. Dans le bureau "browsing", la disposition "colonne à largeur fixe" n'est pas disponible. A la place, c'est la disposition "tall" qui est proposée, avec une zone principale occupant les 4/9 de la largeur de l'écran.
Dans tous les bureaux 1 à 4, la largeur de la zone principale ("master pane") dans la disposition "colonne à largeur fixe" est de 80 caractères, ce qui est bien pour travailler dans un terminal ou pour éditer un fichier dans (par exemple) Vim avec une longueur de ligne de 80 caractères.
Dans les quatre bureaux "edit" (bureaux 6 à 9), la largeur de la zone principale ("master pane") dans la disposition "colonne à largeur fixe" est de 163 caractères, ce qui est bien pour éditer deux fichiers côte à côte dans Vim (séparation verticale) avec l'option "foldcolumn" réglée à 1 et une longeur de ligne de 80 caractères dans les deux fichiers.
Vous pourriez être intéressés par le plugin Vim Wibafoco
qui change automatiquement l'option "foldcolumn" en fonction de la largeur de
fenêtre dans Vim. Ce plugin est disponible là :
https://github.com/thierr26/wibafoco
En plus du fichier xmonad.hs, J'ai du écrire quelques autres fichiers pour parvenir à une configuration satisfaisante.
Un fichier .xbindkeysrc pour lier les touches multimédia du clavier à des lignes de commande.
Les touches de volume (plus, moins et silence ("mute")) sont liées à des commandes amixer.
Les touches "titre suivant", "titre précédent" et "pause" sont liées à des commandes MOC ("music on console"). La touche "titre suivant" en particulier est liée à une commande un peu plus complexe que les autres :
mocp -S 2>/dev/null; if [ $? -eq 0 ]; then mocp -p; else mocp -f; fi;
qui fait jouer à MOC le titre suivant si MOC est déjà lancé, ou qui lance MOC et le fait commencer à jouer. Si vous avez une seule liste de lecture ("play list") et que le mode de lecture aléatoire est activé dans le fichier .moc/config, alors vous pouvez faire jouer votre musique dans un ordre aléatoire en pressant uniquement la touche "titre suivant" et sans jamais ouvrir l'interface utilisateur de MOC.
Evidemment, tout cela nécessite que xbindkeys, amixer et MOC soient installés sur le système. Sur un système Debian GNU/Linux vous pouvez les installer avec la commande :
apt-get install xbindkeysrc alsa-utils moc
Dans le dépôt GitHub, vous trouverez l'ensemble des fichiers que
j'ai écrits pour réaliser la configuration :
https://github.com/thierr26/thierr26_xmonad_config_and_dot_files