Synchroniser Orage de Xfce avec un calendrier distant (caldav)

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *