Lire ses agenda en ligne de commande

Pour avoir accès hors ligne à mes agendas rapidement en ligne de commande (et donc également via emacs), j’utilise la combinaison vdirsyncer (gérant la synchronisation) et khal (donnant une interface interactive ou non).

La configuration de vdirsyncer se fait via le fichier ~/.config/vdirsyncer/config. On aura un espace local qui sera synchronisé avec un espace distant, ce dernier sera mis à read_only pour ma part (comme je n’utilise khal que pour la visualisation, bien qu’il puisse être étendu).

La configuration est la suivante:

[general]
status_path = "~/.config/vdirsyncer/status/"

[pair calname_calendar]
a = "calname_calendar_local"
b = "calname_calendar_remote"
collections = ["from a", "from b"]

[storage calname_calendar_local]
type = "filesystem"
path = "~/.config/vdirsyncer/calendars/calname"
fileext = ".ics"

[storage calname_calendar_remote]
type = "caldav"
url = "https://CALDAVURL/"
username = "USERNAME"
password = "PASSWORD"
read_only = true

Pour chaque calendrier calname, on aura deux emplacements calname_calendar_local et calname_calendar_remote. L’ajout d’un deuxième calendrier demandera d’ajouter le triplet pair cal2, storage cal2_local et storage cal2_remote.

Une fois fait, il suffit de lancer la commande vdirsync discover. La synchronisation des agendas se fera via la commande vdirsyncer sync, que l’on peut ajouter à son crontab.

Vient ensuite la configuration de khal. La configuration se fait via le fichier ~/.config/khal et vaut:

[calendars]

[[calname]]
path = "~/.config/vdirsyncer/calendars/calname/<UUID>"
readonly = true
color = "#6BBA88"

[locale]
timeformat = %H:%M
dateformat = %Y-%m-%d
longdateformat = %Y-%m-%d %a
datetimeformat = %Y-%m-%d %H:%M
longdatetimeformat = %Y-%m-%d %H:%M

[view]
 agenda_event_format = {calendar-color}{cancelled}{start-end-time-style} {title} {location} {repeat-symbol}{alarm-symbol}{description-separator}{description} {url}{reset}

Chaque calendrier de ~/.config/vdirsync/calendars/ pourra être rajouté dans la partie [calendars] (ls =~/.config/vdirsync/calendars/ pour récupérer l’uuid du dossier).

On a accès ensuite aux commandes:

  • khal calendar qui affiche les premiers mois.
  • khal interactive qui permet de naviguer dans le calendrier
  • khal list qui liste tous les événements à venir. Un peut spécifier une date de début et de fin, utiliser pour exporter ses agendas.
  • khal search pour rechercher des occurrences dans tous les agendas.