meta données pour cette page
Khal pour un agenda synchronisé avec nextcloud
Dans le but d'être résiliant sur la synchronisation des contacts et de ses agenda. Le programme Vdirsyncer fait des miracles!
Ressources:
Installation des dépendances
D'abord, nous installons les dépendances de python 3 :
# apt install python3-pip khal
Via un compte utilisateur, installer vdirsyncer :
$ pip3 install --user vdirsyncer
Configuration
Vdirsyncer
Admettons que l'on utilise une instance nextcloud sur mon-site.com
Nous allons d'abord commencer par vdirsyncer qui va permettre de récupérer les évènements crées dans l'agenda sous forme de fichier .ics.
mkdir -p ~/.config/vdirsyncer/data mkdir -p ~/.config/vdirsyncer/local nano ~/.config/vdirsyncer/config
- config
[general] status_path = "~/.config/vdirsyncer/data/" [pair khal] a = "personal_local" b = "personal_remote" collections = null conflict_resolution = "b wins" [storage personal_local] type = "filesystem" path = "~/.config/vdirsyncer/local/" fileext = ".ics" [storage personal_remote] type = "caldav" url = "https://mon-site.com/remote.php/dav/calendars/$user/$non-planning/" username = "user" password = "mdp"
- Dans le premier bloc, on définit l'emplacement de stockage des données qu'il va récupérer.
- Dans le second bloc, on déclare les espace de stockage et la méthode qui va être utilisé en cas de conflit lors d'une synchronisation. Ici, nextcloud aura toujours raison en cas de conflit.
- Dans le troisième bloc, on déclare l'espace de stockage locale qui sera interprêté par khal et vdirsyncer se chargera d'y enregistrer les évènements au format .ics.
- Dans le quatrième bloc, on donne les identifiants et le chemin d'accès au caldav.
Ceci fait et à chaque modification de la configuration, il y aura toujours besoin de lancer le discover puis régulièrement (via une tâche cron par exemple) le sync ainsi :
vdirsyncer discover khal vdirsyncer sync khal
On obtiendra ce type de sortie :
Copying (uploading) item 28967f88-8cf2-4409-844e-03f4c340830a to personal_local Copying (uploading) item 28c66d3c-7a2f-4517-9c4a-0c7e31fd10bf to personal_local Copying (uploading) item 28ea97bc-2f03-43cf-b229-48d49fcac5fb to personal_local
Khal
Passons maintenant à la création et à sa configuration de l'environnement :
mkdir -p ~/.config/khal/ vim ~/.config/khal/config
- config
[calendars] [[planning]] path = ~/.config/vdirsyncer/local/ color = dark green [sqlite] path = ~/.config/khal/khal.db [locale] timeformat = %H:%M dateformat = %d-%m-%Y longdateformat = %d-%m-%Y datetimeformat = %d-%m-%Y %H:%M longdatetimeformat = %d-%m-%Y %H:%M [default] default_calendar = "planning" highlight_event_days = True
- Dans la premier bloc, nous spécifions l'emplacement des .ics précédemment téléchargé.
- Dans le second bloc, la base de donnée.
- Dans le troisième bloc, le format des dates.
- Dans le quatrième bloc, le calendrier par défaut chargé lors de l'appel de la commande khal.
Exemple d'usage
khal@test:~$ khal list now 7d Tomorrow, 20-07-2022 anniv michelle ⟳ 09:30-10:00 Point tech@ ⟳ dimanche, 24-07-2022 14:00-15:00 Evolix: ikv ⟳ 22:00→ Sysadmin retreat lundi, 25-07-2022 ↔ Sysadmin retreat ↦ Astreinte mardi, 26-07-2022 ↔ Sysadmin retreat ↔ Astreinte