Jusqu'à maintenant je traitais mes courriels totalement 3 ou 4 fois par jour. Mais je me disais qu'il pourrait être utile d'avoir un mécanisme de notification qui m'indique le nombre de courriels non lus dans certaines "boites de réception" (ou groupes dans la terminologie Gnus qui est mon lecteur de courriels sous Emacs). Par exemple ma boite de réception de courriels qui me sont adressés directement.

Des outils externes à Emacs existent mais généralement ils indiquent simplement que de nouveaux messages sont arrivés, sans distinction des boites de réception, ou alors ils peuvent traiter différentes boites de réception mais cela conflexifie la configuration avec Gnus. Et le point le plus génant est surtout que la notification est faite en dehors d'Emacs. L'idéal étant d'avoir une notification dans la mode-line d'Emacs.

J'ai cherché ce qui pouvait exister et je suis tombé sur deux modules de type "Gnus notify". Les deux modules (gnus-notify et gnus-notify+) sont proches mais ont quelques différentes qui s'avèrent génantes par rapport à mon objectif :

  • gnus-notify permet de sélectionner quels groupes Gnus on veut inclure dans la notification mais n'affiche pas le nombre de messages non lus dans le groupe
  • gnus-notify+ affiche le nombre total de messages non lus mais ne permet pas de pas de sélectionner certains groupes

Argh, il me faudrait gnus-notify++ qui permettrait de sélectionner quels groupes Gnus on veut inclure dans la notification et d'afficher dans la mode-line le nom des groupes et le nombre de messages non lus pour chaque groupe.

Je suis loin d'être un expert en Lisp (le langage dans lequel sont écrits les modules d'Emacs) mais bon je me suis lancé dans le patch du module gnus-notify qui possédait déjà une fonctionnalité utile (par rapport à gnus-notify+) : la possibilité d'ouvrir directement le groupe Gnus listé dans la mode-line.

J'ai envoyé le patch à l'auteur du module qui l'a trouvé utile. Il a fait un peu de refactorisation et a ajouté une variable permettant d'activer ou non l'affichage du nombre de messages non lus.

Pour utiliser le module il faut par exemple : ajouter le code dans un des répertoires du load-path et mettre un "(load-library "gnus-notify")" dans le .emacs.

Ensuite, il suffit de choisir les groupes pour lesquels on souhaite une notification. Pour cela, il faut ajouter une ligne dans le paramètre du groupe (utiliser la commande gnus-topic-edit-parameters ou le raccourci "G p" sur le groupe) :

(modeline-notify t)

Et pour finir il faut activer la récupération des courriels de façon automatique en tâche de fond dans Gnus (par exemple toutes les 20 minutes). Ajouter pour cela :

(gnus-demon-add-handler 'gnus-group-get-new-news 20 nil) (gnus-demon-init)

Le module modifié est disponible.