./.

Depuis un moment, j'avais envie d'essayer Javascript autrement que dans une page web. J'ai bien développé 2-3 bricoles en node.js qui ne valent pas la peine d'être montrée, mais j'avais dans mon radar une autre cible facilement visible : une extension pour Gnome Shell.

Calendrier révolutionnaire dans Gnome-Shell Du coup, j'ai développé quelque chose d'absolument inutile (et donc complètement indispensable) : un affichage de la date dans le calendrier républicain (celui qui a été adopté à la révolution en 1792, dont on retient surtout le coup d'état du 18 brumaire, et le homard thermidor).

Fonctionnalités

Dans la barre du haut s'affiche la date sous forme simple (par exemple 1er vendémiaire, an 223). Si on clique dessus, on a la date plus détaillée (nom des jours selon la classification de Fabre d'Églantine, nom du jour de la décade et numéro de décade, ainsi que le jour julien et la date ISO). On peut aussi se déplacer (par sauts de 1 ou 30 jours) pour voir les noms des jours suivants ou passés.

J'utilise les mêmes fonctions de calcul pour la date que le site fourmilab. Je pourrais d'ailleurs étendre l'application pour afficher aussi (ou au choix) la date hébraïque, islamique, maya, persane ou d'autres encore. L'essentiel est de pouvoir faire un peu de calculs astronomiques (pas astrologiques).

Je n'ai pas mis le système d'affichage de l'heure, et par simplicité, je n'ai pas essayé de me glisser dans le calendrier habituel de Gnome (c'est faisable, mais plus complexe à maintenir).

Développement

Le chemin n'a pas été facile ! L'environnement gnome-shell manque sérieusement de documentation. J'ai dû inférer un certain nombre de propriétés des objets à partir d'exemples (la méthode usuelle, apparemment). Avoir appelé les bibliothèques graphiques St ne permet pas vraiment des recherches simples dans Google. Si j'ai le courage de faire une deuxième extension, je posterai une liste webographique des pages consultées.

L'environnement n'aide pas trop non plus. Par exemple, pour qu'une extension fonctionne bien, if faut prévoir sa destruction et en particulier prévoir la déconnexion des signaux (c'est un environnement graphique où les objets communiquent par signaux). Je ne trouve pas tout ça très mûr parce qu'on doit gérer à la main la destruction des listeners pour les boutons (comme on demande au bouton de créer son listener, il pourrait très bien les détruire lorsqu'il est effacé).

J'ai dû rajouter une couche pour gérer la traduction (des boutons, pas de la date : ça n'a aucun sens de mettre une date purement française en anglais). Je n'ai pas osé mettre des préférences encore (ça pourrait m'intéresser à terme, par exemple pour choisir le type de date affichée ou l'endroit).

Installation

L'installation dans un gnome récent est ultra-simple :

  • se rendre sur la page de l'extension avec un navigateur muni du plugin gnome (ce ne sera pas le cas de chrome sur un linux récent,
  • Activer le plugin

L'installation à la main est à peine plus difficile :

  • Télécharger le code source (sur Github ou sur la page de l'extension)
  • Le décompresser dans ~/.local/share/gnome-shell/extensions/ dans un répertoire FRC@jcdubacq.dubacq.fr
  • Redémarrer gnome-shell (Alt+F2 puis r) (vous ne perdez pas votre travail en cours). Éventuellement, lancez gnome-tweak-tool si ça n'apparaît pas.
  • Si votre version de Gnome est plus ancienne que la mienne, essayez de modifier la version dans le fichier metadata.json.

Le code source de ma version de travail est disponible sur Github.