Calendari CalDav sincronizzati e gestiti da terminale [Update]

Circa un anno e mezzo fa avevo scritto l’articolo: Calendari CalDav sincronizzati e gestiti da terminale. Questo articolo serve come aggiornamento, dato che sono in parte cambiati i passaggi di installazione e configurazione.
Partitrò quindi direttamente dalle fasi di installazione, saltando il cappello introduttivo.

Installazione

Per i passaggi di installazione prendo, come al solito, a riferimento l’attuale Debian stabile:

[email protected]:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 8.6 (jessie)
Release:	8.6
Codename:	jessie

Installare pip3:

[email protected]:~# apt install python3-pip

Installare quindi khal (vdirsyncer viene installato come dipendenza):

[email protected]:~# pip3 install khal

Configurazione

Creare le direcotry necessarie:

[email protected]:~$ mkdir -p ~/.vdirsyncer/status ~/.calendars

Editare con il proprio editor di testo preferito il file ~/.vdirsyncer/config; qui sotto vi propongo un file di configurazione di esempio:

[general]
# A folder where vdirsyncer can store some metadata about each pair.
status_path = "~/.vdirsyncer/status/"
 
 
# CALDAV
[pair caldav_calendar]
a = "caldav_calendar_local"
b = "caldav_calendar_remote"
# Edit collections with your caldav calendar name (real name, not friendly name!)
# "personal" and "shared" labels are only examples. Instead, put your real caldav calendar name.
collections = ["personal", "shared"]
 
[storage caldav_calendar_local]
type = "filesystem"
path = "~/.calendars/"
fileext = ".ics"
 
[storage caldav_calendar_remote]
type = "caldav"
url = "https://mysite.caldav/caldav/"
username = "MYUSER"
password = "MYPASSWORD"
# verify_fingerprint and verify are useful only if you connect to self signed https caldav resource
#verify_fingerprint = "XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX"
#verify = false

Ora occorre far “scoprire” i calendari a vdirsyncer:

[email protected]:~$ vdirsyncer discover caldav_calendar
Discovering collections for pair caldav_calendar
caldav_calendar_local:
caldav_calendar_remote:
  - "shared" ("Agenda condivisa")
  - "personal" ("La mia Agenda")
warning: No collection "personal" found for storage caldav_calendar_local.
Should vdirsyncer attempt to create it? [y/N]: y
warning: No collection "shared" found for storage caldav_calendar_local.
Should vdirsyncer attempt to create it? [y/N]: y
Saved for caldav_calendar: collections = ["personal", "shared"]

Dopo l’operazione di discover è finalmente possibile fare un primo sync:

[email protected]:~$ vdirsyncer sync

È ora possibile configurare khal; viene fatto tutto “quasi” in automatico con il comando khal configure:

[email protected]:~$ khal configure
What ordering of year, month, date do you want to use? (You can choose the separator in the next step)
[0] year month day
[1] day month year
[2] month day year
Please choose one of the above options: 1

Now, please choose a separator
[0] -
[1] .
[2] /
Please choose one of the above options: 0
Does this look sensible to you: %d-%m-%Y (today as an example: 16-12-2016)? [y/N]: y

What timeformat do you want to use?
[0] 24 hour clock (recommended)
[1] 12 hour clock
Please choose one of the above options [0]: 0
Does this look sensible to you: %H:%M (current time as an example: 08:31)? [y/N]: y

If you use vdirsyncer to sync with CalDAV servers, we can try to load its config file and add your calendars to khal's config.
Should we try to load vdirsyncer's config? [Y/n]: y
The following collections were found:
  caldav_calendar_local: ~/.calendars/

Do you want to write the config to ~/.config/khal/khal.conf? (Choosing `No` will abort) [y/N]: y
created directory ~/.config/khal
Successfully wrote configuration to ~/.config/khal/khal.conf

Ora potete usare il comando “khal” per visualizzare il calendario e “khal interactive” per modificare gli eventi.

Automazione

Per mantenere tutto sincronizzato consiglio di adottare questo script (da salvare in /usr/bin):

#!/bin/bash
#Script /usr/bin/caldav_sync.sh
#Sicnronizzo i calendari caldav con vdirsync


#Controllo che ci sia una connessione a internet attiva
test_conn=$(nmcli g|grep -c "collegato (solo local)")
if [ $test_conn -eq 0 ]; then
	vdirsyncer sync
fi
exit 0

e quindi di far eseguire lo script da cron, aggiungendo la riga seguente al vostro crontab personale (il comando, da dare col vostro utente, è “crontab -e”):

*/10 * * * *	/usr/bin/caldav_sync.sh

Conky

Infine, se volete avere sempre sott’occhio i vostri appuntamenti, valutate la possibilità di usare questo file di configurazione di conky (riguardo a Conky, vi rimando ad un altro articolo):

# Gap between borders of screen and text
# Same thing as passing -x at command line
gap_x 25
gap_y 25

# Use Xft?
use_xft yes

# Xft font when Xft is enabled
#xftfont Bitstream Vera Sans Mono:size=7
#xftfont Terminus:size=9

# Text alpha when using Xft
xftalpha 0.8

# Update interval in seconds
update_interval 1.0

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Create own window instead of using desktop (required in nautilus)
own_window yes
#own_window_colour grey
own_window_transparent yes
own_window_argb_visual yes
own_window_argb_value 255
own_window_type normal
own_window_class conky-semi
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

# Use a background image
background yes

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# Minimum size of text area
#minimum_size 300 200

# Maximum width of widget
maximum_width 600

# Draw shades?
draw_shades yes

# Draw outlines?
draw_outline no

# Draw borders around text
draw_borders no
draw_graph_borders yes

# Stippled borders?
#stippled_borders 8

# border margins
#border_margin 4

# border width
#border_width 1

# Default colors and also border colors
default_color white
color2 9fee62 # System is up to date
color3 ff4343 # Red - Number of Updates Available

default_shade_color black
default_outline_color white

# Text alignment, other possible values are commented
alignment top_right

# Subtract file system buffers from used memory?
no_buffers yes

# Set to yes if you want all text to be in uppercase
uppercase no

# Number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# Number of net samples to average
# Set to 1 to disable averaging
#net_avg_samples 2

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale yes

# Width and thickness of ${hr 2} bar separator
default_bar_size 150 5

# Lua rounded corners requirements
lua_load ~/.conky/draw_bg.lua
lua_draw_hook_pre draw_bg 
imlib_cache_size 0

# Distance of text from edge of widget
border_outer_margin 10

TEXT
${alignc}${font AvantGardeLTMedium:bold:size=12}${color Tan1}AGENDA${font}${color}
${font Andale Mono:size=9}${execi 300 khal calendar}${font}

Buon divertimento!

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

Installare e configurare California su Debian Testing (Jessie)

California è un nuovo componente di Gnome 3 per i calendari locali e remoti. Si integra perfettamente con la funzionalità “Account Online” di Gnome 3 e – a mio parere – assieme a Geary si propone come valida e leggera alternativa del purtroppo pesantissimo Evolution.
Su Debian testing (nome in codice ‘Jessie’) è possibile installare geary usando i repository, mentre non esistono pacchetti per California.
Ecco come installare e configurare rapidamente California sulla propria Debian testing:

wget -c http://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.gnome.org/sources/california/0.4/california-0.4.0.tar.xz
tar xf california-0.4.0.tar.xz
cd california-0.4.0
su -c 'aptitude install build-essential intltool pkg-config libgtk-3-dev libgee-0.8-dev libecal1.2-dev libsoup2.4-dev libgdata-dev libgoa-1.0-dev libgirepository1.0-dev itstool valac libxml2-utils'
./configure --prefix=/usr
make
su -c 'make install'

A questo punto avremo california correttamente installato, ma non sarà possibile selezionarlo come applicazione predefinita dal menu “Impostazioni > Dettagli”.
Per risolvere questo inconveniente, basta dare il seguente comando da terminale:

gvfs-mime --set text/calendar california.desktop

Buon divertimento con California!

Schermata da 2015-04-20 17:22:57

Make Beauty Debian Install

ovvero: come rendere un’installazione di Debian davvero bella!

Ecco alcune semplici dritte per rendere Debian Testing (versione Wheezy, oggi), graficamente accattivante, al pari di altre distro (più attente all’aspetto grafico).

La versione di Debian che utilizzo (e che quindi è qui spigata) utilizza come Desktop Environment KDE; aluni passaggi saranno tipici per KDE, mentre altri sono universalmente applicambili a qualsiasi Debian (testing).

Tutti i comandi devono essere dati, se non è specificato diversamente, come utente “root”.

Installiamo lo Splash Screen

Chi è abituato a Ubuntu, Fedora o OpenSuse non può che rimanere deluso dal fatto che Debian, durante l’avvio del sistema operativo non abbia alcun boot splash.

Vediamo come installarne e configurarne uno.

Innanzitutto è necessario installare il programma plymouth:

  aptitude install plymouth

Quindi occorre editare il file /etc/initramfs-tools/modules e aggiungere le seguenti righe

– Per chi ha chipset grafico Intel:

# KMS
intel_agp
drm
i915 modeset=1

– Per chi ha chipset Nvidia e driver Nouveau

# KMS
drm
nouveau modeset=1

– Per chi ha chipset Nvidia e driver Nvidia

# KMS
drm
nvidia modeset=1

– Per chi ha chipset Ati

# KMS

drm

radeon modeset=1

Per sapere quale sia il proprio chipset grafico, dare il comando

lspci|grep -i display

SOLO PER CHI USA I DRIVER NVIDIA: Occorre modificare il file /etc/grub.d/00_header e aggiungere, sotto la riga “gfxmode=${GRUB_GFXMODE}”, la seguente riga: set gfxpayload=keep

Occorre anche modificare il file /etc/default/grub e cambiare la risoluzione: per una risoluzione di 1024×768, togliere il commento alla riga #GRUB_GFXMODE=640×480 e modificarla in questo modo:

GRUB_GFXMODE=1024x768

Cambiare anche la riga GRUB_CMDLINE_LINUX_DEFAULT=”quiet” con:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Infine, aggiornare grub con il comando:

update-grub2

Plymouth, una volta installato, è corradot da una lista di temi da cui scegliere; per avere la lista dei temi disponibili sul proprio sistema, basta dare il comando:

/usr/sbin/plymouth-set-default-theme --list

Per installare uno specifico tema listato basta dare il comando

/usr/sbin/plymouth-set-default-theme THEME

sostituendo THEME con il nome del tema che si vuole abilitare.

Infine, basta dare il comando

update-initramfs -u

per applicare le modifiche, visibili dal successivo riavvio.

Far “sudare” il proprio account

Debian, diversamente da Ubuntu, mantiene attivo l’utente root, e non dà di default i privilegi di admin ad altri utenti. Per cambiare questo aspetto è sufficiente dare il comando

visudo

che apre con l’editor predefinito il file di configurazione dei sudoers, cioè di coloro che possono acquisire i privilegi di root con il comando sudo nomedelcomando.

Per concedere tutti i privilegi all’utente “pippo” è sufficiente aggiungere questa riga:

pippo    ALL=(ALL:ALL) ALL

salvare e chiudere il file.

Installare un bel tema per KDM

Il tema di default di KDM non è assolutamente il massimo, ed è quindi consigliabile cambiarlo.

Consiglio di fare una visita su http://kde-look.org e scieglere il proprio tema KDM preferito.

Personalmente, mi piace molto il set Caledonia, che offre, oltre al tema KDM, lo splash screen, il set di icone, il tema di plasma, e molto altro.

Come utente standard non è però possibile modificare graficamente il tema di KDM (probabilmente per un bug nell’interfaccia di systemsettings, che dovrebbe chiedere una password).

È comunque sufficiente par partire systemsettings con privilegi più elevati con questi comandi da terminale per aggirare il problema

xhost +
sudo systemsettings

Chi non avesse messo il proprio utente nei sudoers può comunque far girare graficamente systemsettings, con questi due comandi dati da terminale (come utente non privilegiato):

xhost +
su -c 'systemsettings'

Quindi scegliere la voce “Schermata d’accesso” per configurare KDM (con la possibilità di installare nuovi temi).

Per la personalizzazione di temi e icone sul proprio Desktop personale, non serve una guida specifica, lascio al gusto e all’esperienza del lettore il compito.

Installare Icon-Only Task Manager

L’icon Only Task Manager è uno stupendo gestore delle attività per Plasma che mostra le finestre delle varie applicazioni attive in stile “Mac” (o Unity, chi copia da chi?).

Per Debian, purtroppo, non è disponibile un pacchetto precompilato, ma non è difficile compilare questo software da sorgenti; ecco come fare.

Occorre innanzitutto andare sul sito del progetto (http://kde-apps.org/content/show.php/?content=144808) e scaricare l’ultima versione (ad oggi, v. 0.92).

Quindi occorre installare i seguenti pacchetti:

sudo aptitude install build-essential cmake kde-workspace-dev libdbusmenu-qt-dev

Fatto questo, siamo pronti per configurazione e installazione da sorgenti: scompattato il tarball dei sorgenti, spostarsi nella directory che li contiene e dare i seguenti comandi

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix`
make
sudo make install

Se non ci sono errori di compilazione, il nuovo plasmoide è installato e pronto per essere abilitato nel pannello di KDE