Calendario en conky

Para mostrar un calendario en conky se hace uso del comando cal, para saber como funciona leete su manpage (man cal en una terminal). Como verás tiene muchas opciones, podemos representar el año completo, el mes actual, el siguiente, al anterior, en fin, lo que se te ocurra o te interese.

Yo para permitirme poder cambiar el formato individual de cada parte del calendario, marcar el día actual, etc tengo un script que me facilita las llamadas desde conky, calendario.sh

#! /bin/sh
#str=`echo '\033[01;32m29'`

DATE=`date | awk -F" " '{print $3}'`

case "$1" in
mes)
cal -m | head -n1
;;
semana)
cal -m | head -n2 | tail -n1
;;
pasado)
cal -m | grep -v '[a-zA-Z]' | grep '[0-9]' | awk -F$DATE ' BEGIN {i=0}
($1 == $0 && i==0) {print $1}($1 != $0 && i==0){i=i+1;print $1}';
;;
hoy)
echo $DATE;
;;
futuro)
cal -m | grep -v '[a-zA-Z]' | grep '[0-9]' | awk -F$DATE ' BEGIN {i=1}
(i==0) {print $0}($1 != $0 && i==1){i=i-1;print $2}';
;;
esac

Así llamando a las diferentes partes del script puedo obtener la información para conky para poder darle diferente formato obteniendo algo como:


que corresponde a las líneas en el conkyrc:

${color white}${font LCDMono:size=30}${time %H:%M}$font${voffset -10}${font LCDMono:size=16}${time :%S}$font
${voffset 7}${color gold}${execi 60 ~/configuracion/calendario.sh mes}
${color dddddd}${execi 60 ~/configuracion/calendario.sh semana}
${color 888888}${execi 60 ~/configuracion/calendario.sh pasado}${color red}${execi 60 ~/configuracion/calendario.sh hoy}${color 888888}${execi 60 ~/configuracion/calendario.sh futuro}

y en donde uso la fuente LCD Mono para la hora.
Por supuesto esto es un ejemplo de como lo tengo configurado, hay miles de formas de configurarlo.

7 comentarios:

Anónimo dijo...

Me temo que el código de conky está incompleto, ya que no cabe en la pantalla...
Gracias.

volante dijo...

Hola, estar está, el problema es que lo corta la plantilla, si lo marcas con el raton al copiarlo se copia entero, por si acaso lo pongo aqui tambien:

${color white}${font LCDMono:size=30}${time %H:%M}$font${voffset -10}${font LCDMono:size=16}${time :%S}$font
${voffset 7}${color gold}${execi 60 ~/configuracion/calendario.sh mes}
${color dddddd}${execi 60 ~/configuracion/calendario.sh semana}
${color 888888}${execi 60 ~/configuracion/calendario.sh pasado}${color red}${execi 60 ~/configuracion/calendario.sh hoy}${color 888888}${execi 60 ~/configuracion/calendario.sh futuro}

Laura dijo...

hola... me encanta tu blog...

en cuanto a este calendario, lo tengo practicamente configurado a mi gusto, pero desde que lo probe hay algo ke no me cuadra, y es ke los dias no cuandran en una casilla, es decir esta lun mar mier etc y los numeros no estan donde deberian estar, me puedes ayudr?

volante dijo...

hola, gracias

para que cuadre es necesario usar una fuente monospace para los días de la semana y los días del calendario, si no los espacios lo descuadran todo

Laura dijo...

muchas gracias, casi me salen canas verdes intentando ke eso cuadrara :P

tengo otra pregunta... tu sabes como se puede hacer para centrar todo el calendario??? pues utilice aligc pero me centra el mes, los dias [en el caso de mazo] el 1 dia y la ultima semana... :S

graicas

Laura dijo...

Hola muchas gracias por tu ayuda... y perdon molestarte tanto... pero ahora, kise centrar el reloj y el calendario con alingc, el problema esta en ke me centra los dias [en el caso de marzo] el 1, y los ulitmos dias, el resto del mes no kedo centrado, tu me puedes ayudar???? aki un pantallazo de como se ve :( http://i41.tinypic.com/2zzkarp.png

gracais :)

volante dijo...

Hola

realmente nunca me había planteado esa cuestión, ya que yo siempre el calendario lo uso en un conky aparte, así que es un reto conseguir lo que comentas, te explico como, haciendo uso de la variable execpi:
Por ejemplo usando esta linea en vez de la que uso en la entrada del blog para el cuerpo del calendario (los días del mes)

${color 888888}${execpi 60 ~/configuracion/calendario.sh pasado | sed s/^/\${alignc}/}${color red}${execpi 60 ~/configuracion/calendario.sh hoy | sed s/^/\${alignc}/}${color 888888}${execpi 60 ~/configuracion/calendario.sh futuro | sed s/^/\${alignc}/}

Como puedes ver he cambiado la variable execi por execpi (puedes ver sus diferencias aquí) y he añadido al final de cada comando una expresión de sustitución sed para que añada ${alignc} al principio de cada linea, así el centrado tendrá efecto en todas las lineas y no solo en la primera.
Una captura para que veas que funciona:
http://img208.imageshack.us/img208/9141/pantallazo1238533249197.png