Un menu pour awesome
Awesome est un window manager (wm) en mode pavement ( les fenêtres se disposent de manière à ne jamais se chevaucher ). Cela permet de ne pas avoir à se soucier de la manière dont il faut gérer l'affichage des applications.
Une des particularité est que sa configuration se fait par un fichier de script exécuté au lancement du bureau. Cela permet de paramétrer comme on le souhaite le bureau sans être limité par le WM. La contrepartie est que cela est plus difficile à prendre en main, et une erreur de code entraîne un écran gris au lieu du bureau que l'on souhaite obtenir... Le langage utilisé ( Lua ) est un langage connu pour sa légèreté. Pour l'instant, le projet étant encore assez jeune, il n'existe pas encore beaucoup de modules standardisés pour configurer le système, mais je pense que ceux-ci ne tarderont pas à venir...
Pour l'instant la configuration n'est pas encore stabilisée, certains composants changent au cours d'une version à une autre, ce qui casse parfois la mise à jour et oblige à retravailler les scripts de mise de configuration. Je pense cependant que tout cela suit la bonne direction et que ces soucis finiront par disparaître avec le temps et les versions suivantes
La plupart des actions peuvent être associées à un raccourci clavier, et si il est possible d'affiche une barre d'outil à chaque applications (« titlebar »), on prend vite l'habitude de s'en passer et de tout contrôler au clavier. On est d'autant plus aidé par cela par shifty une extension qui permet de « programmer » la manière dont on veut que les fenêtres s'affichent : sur quel écran, avec quels paramètres etc. Cela permet par exemple d'avoir une configuration pour des applications utilisant plusieurs fenêtres ( je pense par exemple à Gimp ) paramétrée comme on le souhaite…
On prend vite l'habitude également d'utiliser plusieurs « tags » ( l'équivalent de bureaux virtuels mais un peu plus étendus ) : ceux-ci peuvent être paramétrés pour afficher des applications sépicifiques ( j'ai par exemple adapté ma configuration pour que web affiche firefox, ou que news affiche le couple elinks/newsbeuter pour lire mes flux RSS…
Bien sûr le temps de paramétrage au début est un peu long, mais maintenant que l'API est stable, il n'est plus nécessaire de tout reprendre à chaque fois que l'on met à jour awesome.
Je trouvais qu'il manquait à Awesome un menu avec les actions disponibles sur les fenêtres : la faire passer au premier plan, la minimiser… Tout ceci est disponible avec des raccourcis claviers, mais il n'y a pas d'option centralisée pour les retrouver. J'ai donc décidé de me plonger un petit peu dans lua pour produire le menu que voilà :
Le menu permet les actions suivantes :
- On top : Pour mettre le client sélectionné au premier plan et le rendre flottant
- Sticky : Faire apparaître le client sur tous les tags
- Minimize : Réduire le client
- Close : Fermer le client
- Move To : Déplacer le client vers un autre tag
Le script fonctionne avec awesome 3.4.5, les versions antérieures ne sont pas forcement compatibles suite à un changement dans l'ABI du menu. J'essaierai également de le mettre à jour pour les versions suivantes ( du moins tant que je m'en servirai…)
Pour le faire fonctionner, il faut télécharger le script et le placer dans son répertoire ${HOME}/.config/awesome . Ensuite, éditer le fichier rc.lua et y ajouter la ligne suivante en en-tête :
require("mymenu")
et dans la partie Key Binding :
clientkeys = awful.util.table.join( […] awful.key({ modkey, }, "Down", function(c) menu_instance = newAppMenu(c) end),
Le menu apparaîtra sur le raccourci Mod4 + Flèche du bas
Le fichier :mymenu.lua