Table des matières

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"

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

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