Avec un coup de main de Lightning
Xfce est un environnement de bureau léger pour Linux, que j’ai personnellement découvert avec Zenwalk (célèbre petite distribution française d’alors basée sur la vénérable Slackware, mais qui a depuis disparu des radars…). Les dernières évolutions des mastodontes Gnome et KDE ne permettant plus d’utiliser la technologie x2go, pour les postes de travail à distance, Xfce a su faire son trou, et notamment sur mon serveur de bureaux Linux. Même si, de toute façon, pour être tout à fait honnête, je n’ai pas eu l’occasion de re-tester KDE depuis que Mandrake Linux/Mandriva a périclité… Mais bref, cessons de parler de nos disparus, et revenons à Xfce…
Et notamment à son calendrier de bureau Orage. Le but ici étant de le synchroniser avec un calendrier caldav, tout en profitant de Lightning, l’extension de Thunderbird, installé par défaut sur la plupart des distributions embarquant Xfce… Et d’avoir d’un coup de clic d’un seul, nos évènements et tâches, comme le permet l’applet calendrier de Gnome…
Pour ce faire nous allons utiliser inotify et systemd en espace utilisateurs… Pour les distributions qui implémentent cette fonctionnalité de systemd ! Ce qui n’est notamment pas le cas pour RedHat, CentOs… Nous parlerons donc ici de la famille Debian, Ubuntu et consorts.
Il nous faut d’abord installer inotify-tools:
sudo apt install inotify-tools
Pour cet exemple, nous allons imaginer que vos calendriers sont hébergés sur Nextcloud. À vous de l’adapter pour d’autres cas de figure…
Nous allons donc commencer par écrire un script tout simple « orage_sync » que nous placerons dans /usr/local/bin :
#!/bin/bash
while inotifywait -e modify $(find ~/.thunderbird -name "calendar-data")
do
wget https://[l_adresse_de_votre_nextcloud]/remote.php/dav/calendars/[utilisateur_nextcloud]/personal?export -O ~/.local/share/orage/nextcloud.ics
done
Vous l’aurez compris, ce script observe les changements dans le répertoire calendar-data de votre profil Thunderbird, et le cas échéant télécharge le calendrier ics mis à jour…
On doit cependant lui indiquer vos identifiants dans un fichier .wgetrc.
user=votre nom utilisateur nextcloud
password=votre mot de passe correspondant
Il nous faut maintenant créer notre service : Pour cela nous allons commencer par créer l’arborescence de répertoire systemd/user dans notre répertoire .config.
mkdir -p .config/systemd/user
Et y créer un fichier orage_sync.service :
[Unit]
Description=Orage synchronisation
[Service]
ExecStart=/usr/local/bin/orage_sync
[Install]
WantedBy=default.target
Que nous activerons ainsi :
systemctl --user enable orage_sync.service
systemctl --user start orage_sync.service
Il ne nous reste plus qu’à dire à Orage d’utiliser comme fichier externe /home/[vous]/.local/share/orage/nextcloud.ics en lecture seule… Et à redémarrer systemd.
systemctl --user --system daemon-reload
Bien sûr, le tout peut être automatisé pour tous les utilisateurs, notamment si l’on a une unification des authentifications… Et tiens, puisqu’on est sous Debian, il y a même un script tout prêt pour ça… Allez voir du coté de /usr/sbin/adduser.local (man adduser) ! Sinon, une petite boîte de dialogue Zenity pour demander à l’utilisateur ses identifiants Nextcloud et le tour est joué…
Ah au fait, j’oubliais, je suis formateur Linux…