Gnome Shell Generic Monitor
La crise sanitaire actuelle pousse les entreprises à recourir autant que possible au télétravail. En tant qu'ingénieur logiciel, mon activité s'y prête plus facilement que dans d'autres domaines : un SSH/VNC auquel on pourra adjoindre Jabber, un webmail et un webex pour les réunion audio et roulez jeunesse ! Néanmoins, mon environnement de bureau principal est légèrement différent, de XFCE au travail, je passe à Gnome 3 à la maison. Ainsi, un gadget devenu indispensable n'est plus disponible : le Generic Monitor alias genmon. Indispensable car il me permet de connaître en temps réel le nombre de mail non lus de ma boîte mail.
Ce plugin XFCE permet d'exécuter à intervalle régulier un script, récupère sa sortie et l'affiche (avec un formatage HTML) dans la barre des tâches (en réalité, là où le plugin est instancié). S'il a plutôt tendance à être épuré, le bureau Gnome 3 permet de créer facilement des extensions en Javascript. Un équivalent de genmon n'existant pas, j'ai pris mon courage à deux mains pour le développer.
L'extension Gnome Shell Generic Monitor vient d'être officiellement acceptée !
Les sources (sous licence GPL) sont disponibles sur la forge.
Contrairement au plugin XFCE, celui de Gnome 3 ne lance pas de script, il ne fait qu'écouter via DBUS des requêtes applicatives. Cela ajoute de la souplesse en faisant tourner un ou des scripts simples "métiers", plutôt que d'avoir à développer des extensions spécifiques à chaque fois.
Un exemple Python est fourni, c'est un extrait du script qui tourne chez moi. En plus du nombre de mail, j'affiche également une icône lors de la réception d'un message Pidgin (pratique quand on a raté la notification sonore ou que l'on n'a pas le casque sur les oreilles). Autant j'ai pu être traumatisé à l'époque (plus de 10 ans, certes...) par CORBA, trouvé SOAP assez lourd, autant les wrappers DBUS (du moins Python et Javascript) sont simples à mettre en œuvre. Le seul point négatif : la documentation des extensions n'est pas très fournie, il faut souvent passer par la documentation GNOME (pour le langage C) ou directement regarder les exemples.