Calendari CalDav sincronizzati e gestiti da terminale

2016-12-16: ATTENZIONE, questo articolo è obsoleto.

Leggi l’articolo aggiornato:
Calendari CalDav sincronizzati e gestiti da terminale [Update]

Questo articolo è rivolto a tutti coloro che non vogliono usare client dispendiosi di risorse e/o troppo legati ad un Desktop Environment, ma vogliono comunque poter sincronizzare, gestire ed editare i propri calendari remoti, pubblicati con CalDav.
Per i più pigri, e per quelli che amano le interfacce ‘easy and fancy’ invece consiglio i soliti programmi, ovvero:

Tutti client belli, completi, eleganti, pesanti, avidi di risorse e legati a doppio filo a qualche ambiente o applicazione.

C’è però una speranza anche per gli utenti che usano ambienti leggeri (xfce, icewm, fluxbox, blackbox…mi fermo, sono davvero innumerevoli) o addirittura per chi usi “solo” le tty.
I software (sono due, uno per il sync e uno per la gestione dei calendari) sono khal e vdirsyncer.

Installazione

L’installazione in Debian è semplicissima, basta installare da pacchetti il software python-pip

sudo apt-get install python-pip

e quindi con quest’ultimo installare khal (vdirsyncer verrà installato come dipendenza):

sudo pip install khal

Configurazione

Innanzitutto occorre mettersi il cuore in pace: non esistono semplici wizard per la configurazione dei due software, i cui file di configurazione devono essere creati ed editati a mano. Fortunatamente, è tutto molto semplice.

Partiamo dal file di configurazione di vdirsyncer, che deve essere creato nella posizione ~/.vdirsyncer/config (create la directory .vdirsyncer se necessario).
Qui sotto un semplice file di esempio dove vengono sincronizzati due calendari remoti pubblicati da un server owncloud:

[general]
# A folder where vdirsyncer can store some metadata about each pair.
status_path = ~/.vdirsyncer/status/


# CALDAV
[pair bob_calendar]
a = bob_calendar_local
b = bob_calendar_remote
collections = ["personal", "shared"]

[storage bob_calendar_local]
type = filesystem
path = ~/.calendars/
fileext = .ics

[storage bob_calendar_remote]
type = caldav
url = https://owncloudserver.local/remote.php/caldav/
username = user
password = password

(Questo è un esempio semplificato del più articolato file di esempio reperibile qui)
Come si può notare la sintassi è molto semplice; val la pena fare notare che se ci si collega a servizi via https con certificato self-signed è necessario aggiungere una riga alla sezione contenente le direttive per il collegamento a caldav, con la variabile verify_fingerprint valorizzata al fingerprint SHA1 del certificato self-signed.

Salvato il file (e creata la directory ~/.calendars) è possibile lanciare il primo sync, verificandone il funzionamento, con il comando

vdirsyncer sync

Ora non resta che scrivere la configurazione di khal (da creare nel file ~/.khal); per l’esempio riportato qui sopra il rispettivo file di configurazione di Khal sarà

[calendars]

[[personal]]
path = ~/.calendars/personal/

[[Condiviso]]
path = ~/.calendars/shared/

[locale]
local_timezone= Europe/Rome
default_timezone= Europe/Rome
timeformat= %H:%M
dateformat= %d.%m.
longdateformat= %d.%m.%Y
datetimeformat= %d.%m. %H:%M
longdatetimeformat= %d.%m.%Y %H:%M

Visualizzazione e gestione dei calendari

Con khal è possibile visualizzare e gestire i propri calendari, direttamente da terminale; khal prevede diversi comandi (khal –help per vederli tutti, naturalmente), ma il più interessante è probabilmente khal interactive che permette la visualizzazione e la gestione interattiva dei propri calendari (compresa l’aggiunta e rimozione di eventi).
Vale la pena ricordare che khal crea e modifica gli eventi in locale; il sync con il calendario remoto si ottiene lanciando successivamente il comando vdirsyncer sync.

Uno script per automatizzare il tutto

A chiusura di articolo propongo un semplice script (da associare magari a un lanciatore .desktop da tenere a portata di click) che si occupa di sincronizzare i calendari e di lanciare khal in modalità interattiva.
Lo script è pensato per l’ambiente Xfce4, ma è facilmente personalizzabile con altri ambienti ed emulatori di terminali.

#!/bin/bash
#Simple script to mantain up-to-date CalDav resources with vdirsyncer and khal
#By Franco 'frakbe' Bersani

#Perform first sync
vdirsyncer sync

#exec xfce4-minimal terminal
xfce4-terminal --hide-menubar -T "Calendario" --hide-toolbar --geometry=80x25 -x khal interactive

Nota: probabilmente può comunque valere la pena spostare il comando di sync al di fuori dello script e farlo girare con cron, ma sono valutazioni personali 🙂

Khal in azione

Uno screenshot di khal in azione in una finesta di xfce4-terminal.
khal

Un pensiero su “Calendari CalDav sincronizzati e gestiti da terminale”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *