blog_content/cli/vdirsyncer.rst

139 lines
4 KiB
ReStructuredText
Raw Normal View History

2021-06-29 08:12:43 +02:00
Gérer son agenda en cli
2021-06-28 23:43:16 +02:00
#######################
2021-06-28 21:14:40 +02:00
:date: 2021-06-20 18:30
2021-06-29 22:25:45 +02:00
:modified: 2021-06-29 22:30
2021-06-28 21:14:40 +02:00
:tags: divers, cli
:category: cli
2021-06-28 23:43:16 +02:00
:slug: agenda_cli
2021-06-28 21:14:40 +02:00
:authors: Milka64
:summary: vdirsyncer & khal
2021-06-29 22:25:45 +02:00
:status: published
2021-06-28 23:43:16 +02:00
2021-06-29 22:25:45 +02:00
Si il y a bien un truc que j'aime c'est de pouvoir **TOUT** gérer via le terminal. De pouvoir m'affranchir si besoin de toute interface graphique. De rester indépendant de tout problème d'affichage.
2021-06-28 23:43:16 +02:00
2021-06-29 22:25:45 +02:00
Et dans ce lot d'utilitaire accessible en console, j'ai récemment découvert le duo vdirsyncer & khal.
2021-06-28 23:43:16 +02:00
Vdirsyncer
----------
2021-06-29 22:25:45 +02:00
Vdirsyncer permet de synchroniser un calendrier en ligne (caldav, google calendar, etesync, etc...) avec un dossier local. Il permet également de synchroniser des contacts avec un serveur cardav, mais je ne développerais pas cette partie.
2021-06-28 23:43:16 +02:00
Le fichier de configuration se trouve ici :
.. code-block:: bash
.config/vdirsyncer/config
2021-06-29 22:25:45 +02:00
Tout d'abord, configurons le status_path
2021-06-28 23:43:16 +02:00
.. code-block:: ini
[general]
status_path = "~/.vdirsyncer/status/"
2021-06-29 22:25:45 +02:00
Ensuite, nous pouvons configurer les deux calendriers à synchroniser.
2021-06-28 23:43:16 +02:00
L'un local et l'autre distant.
.. code-block:: ini
[storage local]
type = "filesystem"
path = "~/.calendars/"
fileext = ".ics"
[storage remote]
type = "caldav"
url = "https://caldav.server/
username = "foo"
password = "bar"
2021-06-29 22:25:45 +02:00
Maintenant que nous avons configuré les calendriers, nous pouvons enfin configurer la synchronisation entre les deux calendriers. Cette étape parait idiote, mais elle est indispensable parce que l'outil permet de synchroniser plusieurs agendas.
2021-06-28 23:43:16 +02:00
.. code-block:: ini
[pair caldavserver]
a = "local"
b = "remote"
collections = ["from a", "from b"]
metadata = ["color"]
2021-06-29 22:25:45 +02:00
Il ne reste plus qu'à synchroniser tout ça.
2021-06-28 23:43:16 +02:00
.. code-block:: console
$ vdirsyncer discover
$ vdirsyncer sync
Khal
----
Maintenant que nouqs avons Vdirsyncer qui stocke les agendas dans le dossier ``.calendars``, nous pouvons demander a khal de nous afficher les évenements.
Mais un minimum de configuration est necessaire
.. code-block:: ini
[calendars]
[[local]]
path = ~/.calendars/*
type = discover
[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 = personal
2021-06-29 22:25:45 +02:00
Rien de particulier à dire sur cette configuration qui me parait plutôt claire.
2021-06-28 23:43:16 +02:00
.. code-block:: console
$ khal list
No events
$ khal search dentiste
02/07/2021 10:30-02/07/2021 11:30 Dentiste Dr Brutal
$ khal --help
Usage: khal [OPTIONS] COMMAND [ARGS]...
Options:
-v, --verbosity LVL Either CRITICAL, ERROR,
WARNING, INFO or DEBUG
-l, --logfile LOGFILE The logfile to use [defaults
to stdout]
-c, --config PATH The config file to use.
--color / --no-color Use colored/uncolored output.
Default is to only enable
colors when not part of a
pipe.
--version Show the version and exit.
--help Show this message and exit.
Commands:
at Print all events at a specific
datetime...
calendar Print calendar with agenda.
configure Helper for initial configuration of
khal.
edit Interactively edit (or delete)
events...
import Import events from an .ics file (or
stdin).
interactive Interactive UI.
list List all events between a start
(default:...
new Create a new event from arguments.
printcalendars List all calendars.
printformats Print a date in all formats.
printics Print an ics file (or read from
stdin)...
search Search for events matching
SEARCH_STRING.