Metacity: changer de bureau avec la molette

Le gestionnaire de fenêtre par défaut sous Gnome n’est pas parfait, mais parmi ses quelques défauts, il ne gère pas la molette de la souris pour le déplacement entre les bureaux, jusque là, je changeais tout simplement de gestionnaire en prenant Openbox qui s’intègre assez bien à gnome tout en restant très configurable, dernièrement, ayant eu un petit souci de détection du nombre de bureaux, j’ai voulu tester Metacity à nouveau… pas beaucoup de changements.

Enfin bref, tous ça pour présenter un petit programme permettant de prendre en charge la molette de la souris dont la version initiale a été postée sur un topic du forum d’Ubuntu par alduc1, ça fonctionne, mais génère une alerte de Metacity et se perd dans les bureaux si on en change depuis le pager ou avec les raccourcis clavier.

Je l’ai un peu modifié et lui ai rajouté des options, ce qui me permet de lui indiquer des fenêtres supplémentaires: sdesktop (git).
Pour utiliser le programme, on va d’abord l’installer, pour les utilisateurs d’Archlinux:

yaourt -S sdesktop

pour les autres:

wget http://tuxce.no-ip.org/cgit/public/sdesktop/snapshot/sdesktop-master.tar.gz
tar zxvf sdesktop-master.tar.gz 
cd sdesktop-master
make

Libre à vous de lancer make install ou tout simplement copier l’exécutable dans votre répertoire de scripts si vous en avez un.

Une fenêtre est identifiée entre autre par une classe ou un nom, pour avoir ces éléments:

$ # lancer la commande et cliquer sur une fenêtre, conky par exemple
$ xprop WM_CLASS WM_NAME
WM_CLASS(STRING) = "Conky", "Conky"
WM_NAME(STRING) = "Conky (host)"
$ # de même pour le fond d'écran sous Gnome/Nautilus
$ xprop WM_CLASS WM_NAME
WM_CLASS(STRING) = "desktop_window", "Nautilus"
WM_NAME(STRING) = "x-nautilus-desktop"

Il ne reste plus qu’à lancer:

sdesktop desktop_window Conky

(par défaut, « sdesktop » prend la fenêtre de fond de Nautilus)

Puis tester en utilisant la molette de la souris.
Le programme se lance en tâche de fond (-f pour l’inverse), il suffit de lui envoyer un SIGKILL ou SIGTERM pour le quitter:

killall sdesktop