Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Integración de los eventos de Google Calendar con Awesome


Awesome es mi gestor de ventanas preferido ya que es muy rápido y limpio, además me permite una alta personalización e integración de herramientas externas, en este caso vamos a combinar un widget para mostrar un calendario y una lista de eventos obtenidos desde Google Calendar, el trabajo se dividirá en dos partes:

  • Script en bash para obtener los eventos y parsearlos
  • Widget en LUA que lee el fichero generado por el script en bash

 

Primero instalaremos la herramienta que nos descargará los eventos de nuestro Gogle Calendar:

cd /usr/src/
git clone https://github.com/insanum/gcalcli.git
cd gcalcli
python setup.py install
emerge dev-python/pip
pip install vobject parsedatetime
emerge dev-python/google-api-python-client

 

Ahora creamos el script que nos parseará la salida de la herramienta anterior y nos generará el fichero con la sintaxis correcta para ser leído por el widget en LUA:

vi ~/.scripts/cal.sh

#! /bin/bash
NOW=$(date '+%Y-%m-%d %H:%m')
NOWEPOCH=$(date +%s)
#echo -e "NOW: $NOW"
#echo -e "NOWEPOCH: $NOWEPOCH"
# 30days --> 2592000
ENDEPOCH=$((ENDEPOCH=NOWEPOCH+2592000))
#echo -e "ENDEPOCH: $ENDEPOCH"
END=$(date -d @$ENDEPOCH '+%Y-%m-%d %H:%m')
#echo -e "END: $END"

> /tmp/tareas

IFSORI=$IFS
IFS=$'
'
for LINE in $(/usr/bin/gcalcli --tsv --calendar CALENDARIO1 --calendar CALENDARIO2 --calendar CALENDARION agenda "'$NOW'" "'$END'")
do
    YEAR=$(echo $LINE|awk -F "-" '{print$1}')
    #echo -e "-- YEAR: $YEAR"
    MONTH=$(echo $LINE|awk -F "-" '{print$2}')
    #echo -e "-- MONTH: $MONTH"
    DAY=$(echo $LINE|awk -F "-" '{print$3}'|awk -F " " '{print$1}')
    #echo -e "-- DAY: $DAY"
    case $MONTH in
        01) MONTHLETTERS=Jan ;;
        02) MONTHLETTERS=Feb ;;
        03) MONTHLETTERS=Mar ;;
        04) MONTHLETTERS=Apr ;;
        05) MONTHLETTERS=May ;;
        06) MONTHLETTERS=Jun ;;
        07) MONTHLETTERS=Jul ;;
        08) MONTHLETTERS=Aug ;;
        09) MONTHLETTERS=Sep ;;
        10) MONTHLETTERS=Oct ;;
        11) MONTHLETTERS=Nov ;;
        12) MONTHLETTERS=Dec ;;
    esac
    #echo -e "-- MONTHLETTERS: $MONTHLETTERS"
    TXT=$(echo $LINE|cut -f5-)
    #echo -e "-- TXT: $TXT"
    echo -e "** $TXT" >> /tmp/tareas
    echo -e "SCHEDULED: <$YEAR-$MONTH-$DAY $MONTHLETTERS>" >> /tmp/tareas
done
IFS=$IFSORI
chmod 700 ~/.scripts/cal.sh

 

Realizamos la primera ejecución para que nos pida las credenciales de la cuenta de gmail, a partir de este momento gcalcli almacenará dichas credenciales:

/usr/bin/gcalcli --tsv --calendar CALENDARIO1 --calendar CALENDARIO2 --calendar CALENDARION agenda "'$NOW'" "'$END'"

 

NOTA: Puede que intente abrir la web para dar acceso a la cuenta con un navegador sin javascript, si es el caso antes de la ejecución del script indicaremos el navegador a utilizar:

export BROWSER="firefox"

 

Metemos el script en el cron para que se ejecute cada 5 min:

crontab -e

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

*/5 * * * * /home/XXXX/.scripts/cal.sh >/dev/null 2>&1

 

Nos bajamos el widget:

cd ~/.config/awesome
wget www.alfaexploit.com/uploads/files/orglendar.lua

 

NOTA: El widget de mi web ha sido retocado para que la semana comience en lunes, el script anterior impone la restricción de que los eventos del calendario no pueden tener espacios en blanco, se puede sustituir por _ por ejemplo, para mas información acerca del widget,

 

Integramos el widget en el reloj:

vi rc.lua

-- Create a textclock widget
mytextclock = awful.widget.textclock({ align = "right" })
local orglendar = require('orglendar')
orglendar.files = { "/tmp/tareas" }
orglendar.register(mytextclock)

 

Con esto ya lo tenemos todo, ahora cuando el ratón pase sobre el reloj se desplegará un calendario y una lista de los eventos, el resultado es el siguiente:

 

 

 

 

 

 

 

 


Autor: Kr0m -- 27/04/2014 11:04:05