cwm -- Un gestionnaire de fenêtres efficace
calm window manager ou cwm est un gestionnaire de fenêtres inclus par défaut à OpenBSD. Il me semble qu'il s'agit là d'une belle réussite très bien pensée. L'équilibre entre fonctionnalités, ergonomie et part de configuration laissée à l'utilisateur est trouvé. Pour ma part, ça m'aide à être efficace et plus concentré.
Par contre, on ne va pas se mentir, quand on vient de gnome, ça peut être déroutant au début. Cela dit, si ça vous tente, je vous propose de faire un petit tour de ce gestionnaire de fenêtre (disponible aussi sur les distributions GNU/Linux) pour découvrir sa façon d'être. On tentera d'utiliser autant que possible les composants livrés avec OpenBSD par défaut.
Découverte
Sous OpenBSD, pour lancer une session cwm, je n'ai qu'à mettre dans le fichier ~/.xsession la ligne suivante :
cwm
Une fois la session démarrée, vous avez devant vous un écran tout gris. Beurk. C'est normal cela dit, puisque ce n'est pas au gestionnaire de fenêtres de gérer le fond d'écran. On va y remédier, ne vous en faîtes pas.
Tout d'abord, on va ouvrir un terminal. Pour ça, deux choix s'offrent à vous :
- Ctrl-Alt-Entrée : pouf, xterm s'ouvre.
- Alt-? : un menu pour écrire la commande s'affiche, vous pouvez alors écrire le nom de votre terminal favori.
Pour déplacer la fenêtre, un glisser-déposer avec la souris tout en appuyant sur Alt fera votre bonheur. Pour redimensionner la fenêtre, là aussi plusieurs possibilités :
- Ctrl-Alt-m : maximise la fenêtre
- Ctrl-Alt-Shift-[hjkl] : selon la lettre choisie, vous redimensionnez la fenêtre
- Alt-clic milieu : redimensionnement par glisser-déposer.
Pour fermer une fenêtre, appuyez sur Ctrl-Alt-x.
Pour changer de fenêtre, vous avez toujours Alt-Tab, ou bien vous cliquez sur le bureau pour avoir un menu de sélection de fenêtre. On ne s'encombre pas avec une barre d'état, on reste concentré sur son travail. :)
Vous pouvez aussi appuyer sur Ctrl-/ puis taper le nom de la fenêtre. Si vous ne vous souvenez plus de son nom, appuyez sur Ctrl-a. À partir de ce moment, vous pouvez écrire le nom de la fenêtre recherchée pour filtrer les propositions, ou bien utiliser les flèches pour choisir votre bonheur et valider avec Entrée.
Encore plus fort : vous pouvez donner un label à une fenêtre pour la retrouver plus facilement ensuite avec le raccourci `C-M-n.
Par exemple, voici la liste qui apparaîtra avec Firefox, un terminal avec vim ouvert, une horloge xclock et un autre terminal :
Si j'écris le début de le fenêtre souhaitée (ici, vim), voici ce qu'il se passe:
Les symboles "!" et "&" signifient respectivement que la fenêtre est actuellement sélectrionnée ou cachée.
Ça semble faire beaucoup de raccourcis, mais ils ont tous une certaine logique et on s'y retrouve vite. Si vous n'aimez pas les raccourcis clavier, sachez que :
- Un clic-gauche sur le bureau fait apparaître la liste des fenêtres
- Un clic-droit fait apparaitre la liste des applications définies dans la configuration (vide par défaut)
- Un clic-milieu fait apparaître la liste des groupes.
Dans la suite, j'écrirai “C” pour “Ctrl”, “M” pour “Alt”, “S” pour “Shift” et “4” pour la touche “Super” ou “Windows” qui ne sert à rien habituellement. Ces lettres sont celles utilisées dans la configuration.
Une des particularités de cwm est de permettre de :
- Pouvoir étiqueter une fenêtre (ajout d'un label) afin de la retrouver facilement ensuite (Ctrl-Alt-n).
- Placer les fenêtres dans des groupes. Ça ressemble aux espaces de travail auxquels vous êtes habitués, ainsi qu'aux tag de dwm, mis pas tout à fait : c'est vraiment des groupes de fenêtres qu'on pourra choisir d'afficher ou cacher au besoin.
Prenons un exemple. Vous voulez mettre une fenêtre dans le groupe 5 : on sélectionne le groupe 5 avec C-M-5, puis on focus la fenêtre si ce n'est pas déjà fait, et enfin on fait C-M-g : le contour de la fenêtre change de couleur. Si on rappuie sur C-M-g, alors la couleur change encore car la fenêtre a été retirée du groupe.
À retenir :
- C-M-n, où n va de 1 à 9, permet d'afficher/cacher les fenêtres du groupe n. Sur un clavier azerty, c'est C-M-S-n
- C-M-g permet d'ajouter la fenêtre sélectionnée au groupe actuel.
À partir de ce moment-là, vous voudrez certainement éditer le fichier de configuration ~/.cwmrc afin d'y régler 2-3 choses et peut-être rendre plus pratiques les éléments décrits auparavant.. Si vous souhaitez savoir ce que vous pouvez configurer, les pages “man cwm” et “man cwmrc” vous en diront plus.
Pour finir, je liste ci-dessous les raccourcis par défaut que je trouve très pratiques:
- CM-m : maximise une fenêtre
- CM-a : affiche ou cache tous les groupes
- M-Entrée : cache la fenêtre courante
- CM-s : colle la fenêtre : elle apparaîtra tout le temps, peu importe les groupes choisis.
Ma config' : .cwmrc
Via ce lien, vous trouverez mon fichier de configuration si vous voulez regarder des idées. Rien de très étonnant dans ce que j'ai mis hein. J'attire juste votre attention sur les éléments de configuration suivants :
mon fichier de configuration 🌐
sticky
Avec cette option, les fenêtres ouvertes appartiennent au même groupe que celui de la fenêtre actuellement sélectionnée.
sticky yes
Menu clic-droit
Ce menu permet notamment de gérer les fenêtres par click
command " . off " "doas /sbin/shutdown -hp now" command " + Maxwin " "maxwin" command " x Closewin " "xdotool selectwindow windowclose" command " - Hidewin " "xdotool selectwindow windowminimize" command " ▸ web " firefox command " ▸ fm " pcmanfm command " ▸ office " libreoffice command " * next " "mpc next" command " * prev " "mpc prev" command " * toggle " "mpc toggle" command "--------------" " " command " . lock " "xlock -mode space" command " . zzz " zzz command " . reboot " "doas /sbin/reboot" command " . off " "doas /sbin/shutdown -hp now"
Tiling rapide
Pour un arrangement rapide en mode “tiling” des fenêtres (redimensionnées pour occuper tout l'écran les unes à côté des autres), j'utilise Alt-t ou Alt-Shift-t pour un arrangement horizontal ou vertical. L'option "vtile" permet de définir le pourcentage de l'écran utilisé par la fenêtre à gauche.
vtile 55 bind-key M-t window-htile bind-key MS-t window-vtile
Gestion des groupes
J'utilise les groupes qui sont à portée des doigts à partir de la touche Alt, soit les groupes 1,2,3,4 et 5.
Je veux pouvoir les afficher ou cacher au choix et pouvoir attribuer un groupe à une fenêtre:
bind-key M-ampersand group-toggle-1 bind-key M-eacute group-toggle-2 bind-key M-quotedbl group-toggle-3 bind-key M-apostrophe group-toggle-4 bind-key M-parenleft group-toggle-5 bind-key MS-ampersand window-movetogroup-1 bind-key MS-eacute window-movetogroup-2 bind-key MS-quotedbl window-movetogroup-3 bind-key MS-apostrophe window-movetogroup-4 bind-key MS-parenleft window-movetogroup-5
Sur un clavier azerty, ce ne sont pas les chiffres qui sont accessibles directement mais les symboles &é"'(. Pour trouver leur nom de code, entrez la commande xev dans un terminal puis appuyez sur la touche désirée pour voir apparaître son nom.
Raccourcis de la souris
Je veux pouvoir déplacer une fenêtre sans devoir aller chercher la touche alt : je le fais avec le clic-milieu :
bind-mouse 0-2 window-move
Sinon, scroller sur le fond d'écran (ou xclock) change le volume sonore:
bind-mouse 0-4 "sndioctl -q output.level=+0.1" bind-mouse 0-5 "sndioctl -q output.level=-0.1"
Le fond d'écran
Le fond d'écran est chargé avec GraphicsMagick au démarrage. En fait, ça tourne entre plusieurs fonds d'écran. Voici un bout de script pour mettre une image en fond, sans avoir autre chose à installer.
gm display -background black -backdrop -window root "${1}"
Pour rester simple, vous pouvez mettre une couleur pleine avec xsetroot (pas besoin d'installer quoi que ce soit) :
xsetroot -solid steelblue
Le terminal
J'ai décidé d'utiliser les outils livrés par défaut avec OpenBSD. Donc xterm au lieu de st. Ici, vous trouverez le fichier de configuration pour les couleurs, faire du copier/coller dans le terminal… Ce fichier doit être chargé au démarrage avec la commande
xrdb -merge ~/.Xresources
Le démarrage de session
Pour prendre en compte tous ces petits ajouts à chaque démarrage, modifiez le script ~/.xsession ainsi :
#!/bin/sh . ~/.profile # Fond d'écran xsetroot -solid steelblue & # Chargement des options pour xterm xrdb -merge ~/.Xresources & # Verouillage automatique avec xlock xidle -timeout 600 -program "xlock" & cwm
Les “&” à la fin sont importants. Ajoutez dans ce fichier tous les outils que vous souhaitez lancer au démarrage de session.
Trouver une fenêtre parmi des centaines
Utilisez le raccourci "M-/", puis "C-a" pour toutes les lister. Entrez le nom d'une fenêtre pour la sélectionner.
Obtenir une barre de status
Tout d'abord, prévoyez une marge sur le bord de l'écran dans la configuration de cwm :
gap 18 1 1 1 # margin all around to click on desktop
Bien sûr, vous pouvez installer conky ou lemonbar pour avoir votre barre d'information. Le cas échéant, vous penserez à précisez dans la configuration d'ignorer ces applications avec la mention ignore "conky" par exemple.
Je vous propose à la place de n'utiliser que des outils présents de base dans OpenBSD, à savoir xclock et un peu d'astuce. Pour ça, je vous laisse lire la page xclockbar.
Aller plus loin
Comme d'habitude sous OpenBSD, le manuel est très complet et liste même tous les raccourcis par défaut (menu ssh, donner des petits "label" aux fenêtres pour les retrouver facilement ensuite...")
man cwm