Sincronización de Rainlendar con Google Calendar en Ubuntu

Hace tiempo que quedé impresionado por la calidad del calendario Rainlendar. Rainlendar2 es un calendario multiplataforma que se integra perfectamente en el escritorio.







Puedes descargar la versión para tu plataforma en la página de descargas:

La única pega es que yo usaba Google Calendar y Rainlendar2 sólo soporta la integración con Google Calendar en la versión de pago. De todas formas esto ya ha cambiado gracias a GCALDaemon. GCALDaemon es un proyecto de software libre implementado en Java que implementa una sincronización de Rainlendar2 con Google Calendar. Este programa proporciona dos modos de trabajo:
  1. Un demonio o proceso ejecutándose en segundo plano y que mantiene sincronizados los calendarios de Google y Rainlendar2
  2. Un script que al ejecutarlo sincroniza los calendarios

En la página oficial se dan las instrucciones para configurar el modo 1. En esta entrada voy a explicar una solución basada en la segunda opción, en concreto vamos a configurar GCALDaemon para que sincronice los calendarios al entrar en Ubuntu y al salir o reiniciar.

Paso 0 - Prerequisitos


Partimos de lo siguiente:
  • Una máquina con Ubuntu (aunque puede trasladarse a cualquier distribución Linux)
  • Java 1.5 Runtime Environment o superior
  • Una cuenta GMail
  • Rainlendar2


Paso 1 - Descarga e Instalación


Lo primero es descargar GCALDaemon, en concreto la versión "UNIX/Linux/AIX/Mac OS X compatible ZIP archive". Una vez descargado descomprimimos en una carpeta a nuestra elección, a partir de ahora haremos referencia a dicha carpeta como /home/usuario/GCALDaemon

Paso 2 - Configuración


Lo siguiente es configurar el programa. Lo primero que vamos ha hacer es obtener nuestra clave de Google cifrada, para ello ejecutaremos el siguiente script:
$ /home/usuario/GCALDaemon/bin/password-encoder.sh 
Your Google password: mipasswordgoogle

Original password: mipasswordgoogle
Encoded  password: 005$$QZsd2bvdGZy92dzNXYwlWb

Sample configuration options for GCALDaemon:

file.google.password=005$$QZsd2bvdGZy92dzNXYwlWb
ldap.google.password=005$$QZsd2bvdGZy92dzNXYwlWb

notifier.google.password=005$$QZsd2bvdGZy92dzNXYwlWb
sendmail.google.password=005$$QZsd2bvdGZy92dzNXYwlWb
mailterm.google.password=005$$QZsd2bvdGZy92dzNXYwlWb

Este script nos pedirá la clave de la cuenta Google y lo único que hará es codificarlo con su clave. Esto se hace para no escribir el password en claro en el fichero de configuración de GCALDaemon. De momendo nos quedamos con el valor del password cifrado.

Ahora abrimos el fichero de configuración /home/usuario/GCALDaemon/conf/gcal-daemon.cfg con nuestro editor de textos favoritos. Este fichero contiene toda la configuración de GCALDaemon y nos vamos a la sección
################################################
# CONFIGURATION OF THE FILE-BASED SYNCHRONIZER #
################################################


En esta sección configuraremos los calendarios que vamos a sincronizar. Para este punto necesitamos nuestro password cifrado y la dirección privada de nuestro calendario Google. Esto último se consigue a través de la página de configuración de nuestro calendario en Google Calendar:



La configuración quedaría de la siguiente forma:
################################################
# CONFIGURATION OF THE FILE-BASED SYNCHRONIZER #
################################################

# Enable iCalendar file listener/synchronizer
file.enabled=true
# Local iCalendar file polling interval (recommended is "10 sec")
file.polling.file=10 sec
# Google Calendar polling interval (recommended is "10 min")
file.polling.google=15 min
# Turn it on when you use dial-up connection (default is "true")
file.offline.enabled=true
# CALENDARIO PERSONAL
# Full path of the local iCalendar file
file.ical.path=/home/usuario/Calendarios/Personal.ics
file.google.username=usuario@gmail.com
file.google.password=005$$QZsd2bvdGZy92dzNXYwlWb
file.private.ical.url=/calendar/ical/usuario%40gmail.com/private-XXXXXXXXXXXXXXXXXXXXX/basic.ics


El valor para file.ical.path indica donde se guardará el fichero ICS, por lo que la carpeta (en este caso "/home/usuario/Calendarios/") debería existir. Para añadir más calendarios simplemente ponemos a continuación:
# CALENDARIO TRABAJO
# Full path of the local iCalendar file
file.ical.path2=/home/usuario/Calendarios/Trabajo.ics
file.google.username2=usuario@gmail.com
file.google.password2=005$$QZsd2bvdGZy92dzNXYwlWb
file.private.ical.url2=/calendar/ical/usuario%40gmail.com/private-XXXXXXXXXXXXXXXXXXXXX/basic.ics

De esta forma podemos poner todos los que queramos. Ahora ejecutaremos el script de sincronización para comprobar que todo funciona perfectamente:
$ /home/usuario/GCALDaemon/bin/sync-now.sh
INFO  | GCALDaemon V1.0 beta 16 starting...
INFO  | Extended synchronization enabled.
INFO  | RSS/ATOM feed converter enabled.
INFO  | Local time zone is Hora de Europa Central.
INFO  | Start listening file /home/usuario/Calendarios/Personal.ics...
INFO  | Start listening file /home/usuario/Calendarios/Trabajo.ics...
INFO  | File listener started successfully.
INFO  | Offline file synchronization enabled.
INFO  | Synchronization finished.


Paso 3 - Añadir el Calendario a Rainlendar2


Si todos los pasos anteriores fueron correctos, se habrán creado los dos ficheros ICS. Ahora lo siguiente es añadir dichso calendarios a Rainlendar2, para ello:
  • Pulsamos con el botón derecho sobre Rainlendar2 y elegimos Opciones/Options
  • Seleccionamos la sección Calendarios/Calendars
  • Pulsamos en Añadir/Add... y seleccionamos uno de los calendarios creados anteriormente, indicando la ruta y dándole un nombre
  • Añadimos el resto de calendarios


Paso 4 - Ejecutar el script de sincronización en el arranque, al reiniciar y al apagar


El último paso es hacer que el script de sincronización se ejecute en el arranque, al reiniciar y al apagar el ordenador.

Arranque


Pulsamos en el menú de Ubuntu -> Sistema:Preferencias:Aplicaciones al inicio y en dicha pantalla añadimos el script /home/usuario/GCALDaemon/bin/sync-now.sh

Reinicio


Vamos a añadir el script al runlevel 0 (reinicio). Para ello ejecutamos el siguiente comando:
$ sudo ln -s  /home/usuario/GCALDaemon/bin/sync-now.sh /etc/rc0.d/K99GCALDaemon


Apagado


La señal de apagado ejecuta los scritps a runlevel 6. Por tanto, añadiremos el script para su ejecución en el apagado de la máquina de la siguiente forma:
$ sudo ln -s  /home/usuario/GCALDaemon/bin/sync-now.sh /etc/rc6.d/K99GCALDaemon


Fin


Con esto tendremos configurado todo, espero que os haya servido de ayuda.

2 comentarios:

Luis Alberto dijo...

Excelente post. Mil gracias desde Mérida - Venezuela

Fede Fernandez dijo...

¡Muchas gracias!

La verdad es que ya no escribo en el blog pero lo he dejado por si algún post le es útil a la gente.

Saludos

Publicar un comentario