CALCURSE - organizador basado en modo texto


Tabla de Contenidos


Introducción

calcurse es un calendario y organizador de tareas personal basado en modo texto. Te ayuda a mantener un seguimiento de tus eventos, citas y tareas diarias. Un sistema de notificacion recuerda al usuario sus proximas citas y la interfaz de usuario basanda en ncurses puede ser personalizada para cubrir las necesidades del usuario. Todos los comandos están documentados a través de un sistema de ayuda en linea.

Descripción

Historia

Comencé a pensar en este proyecto cuando estaba acabando mi doctorado en Astrofísica... Empezaba a ser un poco complicado el organizarme y realmente necesitaba una buena herramienta que me ayudase en esa difícil tarea ;-)
Me gustan los programas que utilizan las interfaces de usuario en modo texto porque son simples, rápidos y eficientes, por eso pensé en programar un calendario simple en ese tipo de interfaz. Por otra parte, esperaba aprender el lenguaje C que había utilizado solo a ratos durante mi época de estudiante. Por eso pensé que podía ser un buen proyecto para empezar a estar organizado y ¡ aprender algunas cosas sobre C ! Por desgracia acabe mi doctorado antes de acabar calcurse, pero de todas formas aun quería trabajar en el y esperaba que pudiese ser de ayuda a otra gente. Y aquí esta...

Pero ¿por que 'calcurse'? Bien, es simplemente una concatenación de CALendar y nCURSEs, el nombre de la librería utilizada para construir la interfaz de usuario.

Características importantes

Calcurse es multi-plataforma e intenta ser ligero, rápido y fiable. Esta hecho para ser usado en consola o terminal, tanto en local como en una maquina remota a través de ssh o una conexión similar.
Calcurse puede funcionar de dos modos diferentes : modo interactivo o no-interactivo. El primero permite a un usuario ver su organizador en casi cualquier maquina gracias a la interfaz basada en modo texto. El segundo modo permite crear recordatorios de una forma muy fácil, únicamente añadiendo calcurse, con los argumentos apropiados en la linea de comando, en el crontab o mediante un sell init script.
Por otra parte, calcurse fue creado pensando en el usuario final y trata de ser lo mas amigable posible. Esto significa un completo sistema de ayuda en linea, conjuntamente con tener todas las posibles acciones visualizadas en todo momento en la barra de estado. La interfaz de usuario también es configurable y uno puede elegir entre combinaciones de colores y disposiciones. Finalmente, un sistema de notificacion recuerda al usuario sus proximas citas.

Instalación

Requerimientos

librería ncurses

Calcurse requiere solo un compilador C, como cc o gcc, y la librería ncurses. Sería muy sorprendente no tener una librería ncurses valida ya instalada en tu ordenador, pero si no la tienes, puedes encontrarla en la siguiente dirección :

		http://ftp.gnu.org/pub/gnu/ncurses/
	

librería gettext

calcurse soporta internacionalización ( de aquí en adelante i18n) con las utilidades gettext. Esto significa que calcurse puede producir mensajes en diferentes lenguas si esta compilado con el soporte para lengua nativa (p.e. NLS). Por otra parte, NLS es opcional, si tu no quieres tener soporte para esta característica, basta con que utilices la opción --disable-nls en el comando configure (ver la sección Proceso de instalación).
Para comprobar si las utilidades gettext están instaladas en tu sistema, puedes buscar el archivo cabecera libintl.h, por ejemplo :

                locate libintl.h
        
Si este archivo cabecera no se encuentra, entonces puedes obtener las fuentes de gettext en la siguiente dirección :
                 http://ftp.gnu.org/pub/gnu/gettext/
        
Nota: Incluso si libintl.h se encuentra en tu sistema, puede ser necesario especificar su localización durante el proceso de instalación, utilizando la opción --with-libintl-prefix en el comando configure. De hecho, el comando configure puede fallar al tratar de localizar esta librería si esta instalada en un lugar infrecuente.

Proceso de instalación

Primero necesitas descomprimir ( gunzip y untar) el archivo fuente:

	tar zxvf calcurse-1.9.tar.gz
	
Una vez has resuelto los requisitos y has extraído el archivo, el proceso de instalación es muy simple y sigue los tres pasos habituales:
  1. ./configure
  2. make
  3. make install (puede requerir privilegios de administrador)
Utiliza ./configure --help para obtener una lista de posibles opciones.

calcurse básicos

Invocación (arranque del programa)

Argumentos de la linea de comando

calcurse acepta las siguientes opciones en la linea de comando (ambas opciones, cortas y largas estan soportadas):

-a, --appointment
Imprime las citas y eventos para el día actual y sale.
Nota: el calendario desde donde leerán puede ser especificado usando la opción '-c' .

-c <file>, --calendar <file>
Especifica el archivo de calendario a usar.
El calendario por defecto es ~/.calcurse/apts (ver la sección Archivos de calcurse).

-d <date|num>, --day <date|num>
Imprime las citas y eventos para la fecha dada o para el numero dado de días próximos, dependiendo del formato del argumento. Soporta dos posible formatos : En el primer caso, devolverá la lista de citas y eventos para la fecha especificada mientras que en el segundo caso devolverá la lista de citas y eventos para los 'n' próximos días.
Por ejemplo, tecleando calcurse -d 3 mostrara tus citas y eventos para hoy, mañana y pasado mañana.
Nota:al igual que para la opción '-a' , el calendario desde donde se leerán puede ser especificado usando la opción '-c' .

-h, --help
Imprime un breve texto de ayuda describiendo las opciones soportadas en la linea de comando y sale.

-n, --next
Imprime las citas para las próximas 24 horas y sale.
El tiempo indicado es el numero de horas y minutos que faltan hasta la proxima cita.
Nota: el calendario desde donde se leeran las citas puede ser especificado usando la opcion '-c'.

-t[num], --todo[=num]
Imprime la lista de tareas pendientes ('ToDo') y sale.
Si se especifica la opcion numero, se mostraran todas las tareas pendientes que tengan la prioridad igual a numero.
Nota: la prioridad debe ser desde 1 (la mas alta) hasta 9 (la mas baja).

-v, --version
Muestra la versión de calcurse y sale.

-x, --export
Exporta los datos del usuario a un formato iCalendar. Citas, eventos y tareas pendientes son convertidos y mostrados en patalla.
Nota: redirecciona la salida standard para exportar los datos a un archivo usando un comando como este:
	        $ calcurse --export > my_data.ics
	

Variable de entorno para i18n

calcurse puede ser compilado son soporte para lenguaje nativo (ver librería gettext ). Así, si quieres ver los mensajes en tu lengua nativa, primero comprueba que esta disponible mirando en el fichero po/LINGUAS. Este fichero indica la lista de lenguas disponibles mostrando el código de dos letras correspondiente (por ejemplo, es sería para español). Si no encuentras tu lengua, tu ayuda seria muy apreciada si pudieses traducir calcurse (ver la sección ¿Como puedo ayudar?.
Si tu lengua esta disponible, arranca calcurse con el siguiente comando:

                LC_ALL=es_ES calcurse
        
donde es_ES es el nombre locale en este ejemplo, pero puede ser remplazado por el locale correspondiente a la lengua deseada.
Debes especificar también tipo de caracteres 'charset' que se usara porque en algunos casos los acentos podrían no mostrarse correctamente. Este tipo de caracteres o 'charset' esta indicado al principio del archivo po correspondiente al lenguaje deseado. Como puedes ver en el archivo es.po se usa el tipo de caracteres iso-8859-1, entonces puedes iniciar calcurse utilizando el siguiente comando:
		LC_ALL=es_ES.ISO8859-1 calcurse
	

Interfaz de usuario

Modo no-interactivo

Cuando es llamado por lo menos con uno de los siguientes argumentos:
-a, -d, -h, -n, -t, -v, -x
calcurse arranca en modo no-interactivo. Esto significa que se mostrara la información deseada, y después de esto, calcurse simplemente se cierra y eres de nuevo devuelto al prompt del shell.
De esta forma, uno puede añadir una linea como 'calcurse --todo --appointment' en el archivo de inicialización de su entorno gráfico (X o consola) para ver, cuando entras en el sistema; la lista de tareas, citas y eventos programadas para el día actual.

Modo interactivo

Cuando es llamado sin ningún argumento o solo con la opción -c, calcurse arranca en modo interactivo. En este modo, se muestra una interfaz conteniendo tres paneles diferentes por los cuales puedes navegar usando la tecla 'TAB' (tabulador), mas una barra de notificaciones, mas una barra de estado (ver la figura de abajo).


   panel de citas y eventos ---.                         .--- panel de calendario
                               |                         |  
                               v                         v
 +------------------------------------++----------------------------+
 |          Citas y eventos           ||        Calendario          |
 |------------------------------------||----------------------------|
 |                 (|)  Abril 6, 2006 ||         Abril 2006         |
 |                                    ||Lun Mar Mie Jue Vie Sab Dom |
 |                                    ||                      1   2 |
 |                                    ||  3   4   5   6   7   8   9 |
 |                                    || 10  11  12  13  14  15  16 |
 |                                    || 17  18  19  20  21  22  23 |
 |                                    || 24  25  26  27  28  29  30 |
 |                                    ||                            |
 |                                    |+----------------------------+
 |                                    |+----------------------------+
 |                                    ||     Tareas Pendientes      | 
 |                                    ||----------------------------| panel de tareas pendientes
 |                                    ||                            |   |
 |                                    ||                            |   |
 |                                    ||                            |<--.
 |                                    ||                            |
 +------------------------------------++----------------------------+
 |---[ Lun 6-4-2006 | 10:11:43 ]---(citas)----> 01:20 :: comida <---|<--.
 +------------------------------------------------------------------+ barra de notificaciones
 | ? Ayuda    R Redibujar    H/L -/+1 Dia      G Ir a    C Config   | 
 | Q Salir    S Guardar      J/K -/+1 Semana   Tab Cambiar vista    |<-. 
 +------------------------------------------------------------------+  |
                                                                       |
                                                                 barra de estado

        
El primer panel representa un calendario que permite iluminar un día en particular, el segundo contiene la lista de citas y eventos pertenecientes a ese día, y el ultimo contiene una lista de tareas pendientes (ToDo) pero que no están asignadas a ningún día especifico.
In the appointment panel, one can notice the '(|)' sign just in front of the date. This indicates the current phase of the moon. Depending on which is the current phase, the following signs can be seen:
  • ' |) ': first quarter
  • ' (|) ': full moon
  • ' (| ': last quarter
  • ' | ': new moon
  • no sign: phase of the moon does not correspond to any of the above ones

En la parte inferior de la pantalla hay una barra de estado, que indica las posibles acciones y sus correspondientes atajos de teclado.
Justo encima de esta barra de estado esta la barra de notificaciones, que indica de izquierda a derecha : la fecha actual, la hora actual, el archivo de calendario actualmente en uso (en el ejemplo de arriba, el de citas, que es el fichero de calendario por defecto, ver la sección siguiente), y la cita mas cercana para las proximas 24 horas. En el ejemplo seria una comida dentro de una hora y 20 minutos.

Nota: Algunas acciones, como editar o añadir un elemento, requieren teclear algo de texto. Esto se hace con la ayuda del editor incorporado.
Dentro de este editor, si una linea es mas larga que el ancho de la pantalla, se mostrara un caracter como '>', '*', o '<' al final de la columna indicando que hay mas caracteres despues, antes y despues, o antes de la posicion actual, respectivamente. La linea se movera horizontalmente si es necesario.
Por otra parte, hay algunos caracteres que se utilizan para editar. Aqui se indican los comandos de edicion disponibles ('^' significa la tecla "control"):

Archivos de calcurse

La siguiente estructura se crea en tu directorio $HOME la primera vez que se ejecuta calcurse :

        $HOME/.calcurse/
                  |___conf
                  |___apts
                  |___todo
        
El archivo conf contiene la configuración del usuario.
El archivo apts contiene todos los eventos y citas del usuario.
El archivo todo contiene la lista de tareas pendientes.

Ayuda en linea

En cualquier momento, puedes consultar el sistema de ayuda integrado presionando la tecla '?'. Una vez en la pantalla de ayuda, puedes acceder a la información acerca de un comando especifico presionando la tecla correspondiente a ese comando.

Opciones

Todos los parámetros de calcurse se peden configurar desde el menú de Configuración disponible pulsando 'C'. Entonces aparecerá un submenu con tres posibilidades : pulsando 'C' de nuevo, te lleva a la configuración del esquema de colores. Pulsando 'L' te permite elegir la disposición de la pantalla principal de calcurse (en otras palabras, donde colocar los tres diferentes paneles en pantalla), y finalmente puedes elegir entre diferentes opciones generales pulsando 'G'.

Opciones generales

Estas opciones controlan el comportamiento general en la forma que se describe a continuación:

Color (temas)

El tema de color de calcurse puede se configurado para cubrir las necesidades del usuario. Para cambiar el tema por defecto, la pagina de configuracion muestra las posibles opciones para el color de fondo y del texto. Usando las teclas de las flechas o las teclas de desplazamiento de calcurse para moverse y 'X'o la barra espaciadora para seleccionar el color, el usuario puede previsualizar el tema que se aplicara. Tambien es posible mantener los colores por defecto del terminal seleccionando la opcion correspondiente en la lista. Notas:

Configuración de la disposición

La disposición corresponde a la posición de los paneles dentro de la pantalla de calcurse. La disposición por defecto hace que el calendario se muestre en la esquina superior derecha del terminal, el panel de 'ToDo' (tareas pendientes) en la esquina inferior derecha, mientras que el panel de citas se muestra en la parte izquierda de la pantalla (ver la figura de la sección Modo interactivo como ejemplo de la disposición por defecto).
Eligiendo otra disposición en la pantalla de configuración, el usuario puede modificar la apariencia de calcurse que mejor se adapte a sus necesidades colocando los diferentes paneles donde los necesite.

Ajustes de la barra de notificaciones

Las siguientes opciones se usan para modificar el comportamiento de la barra de notificaciones:

Bugs conocidos

Aparece una incorrecta iluminación de las anotaciones cuando se usa el tema calcurse blanco y negro conjuntamente con la variable $TERM fijada a xterm-color. Para solucionar este bug, y tal como fue anunciado por Thomas E. Dickey (que mantiene xterm), xterm-xfree86 puede ser usado en vez de xterm-color para fijar la variable $TERM

"The xterm-color value for $TERM is a bad choice for XFree86 xterm because it is commonly used for a terminfo entry which happens to not support bce. Use the xterm-xfree86 entry which is distributed with XFree86 xterm (or the similar one distributed with ncurses)."

Informar de bugs y comentarios

Por favor envía los informes de bugs y tus comentarios a :

        calcurse@culot.org
        
o al autor:
        frederic@culot.org
        

¿Como contribuir?

Si te gustaría contribuir al proyecto, puedes enviar tus comentarios acerca de lo que te gusta o no te gusta, y si hay alguna funcionalidad que echas de menos en calcurse. Por ahora, las posibles contribuciones están limitadas a la traducción de la documentación y mensajes de error de calcurse.

Nota: Cualquier ayuda para la internacionalización de calcurse será muy bienvenida, pero antes de contribuir envía en email a : calcurse-i18n@culot.org para saber si alguien ha empezado ya el proceso de traducción a tu lengua.

Traduciendo la documentación

El directorio doc/ del paquete fuente ya contiene versiones traducidas del manual de calcurse. Aunque si el manual no esta aun disponible en tu lengua nativa, sería de gran ayuda si tu pudieses traducirlo.
Para hacerlo, únicamente copia uno de los archivos de los manuales existentes de manual_XX.html, donde XX identifica tu lengua. Entonces traduce este nuevo archivo creado y envía un email al autor (ver Informar de bugs y comentarios), para que pueda ser incluido en la nueva edición de calcurse.

calcurse i18n

Como ya se ha mencionado, las utilidades de gettext son usadas por calcurse para producir mensajes en diferentes lenguas. Esta sección proporciona información acerca de como traducir estos mensajes a tu lengua nativa. Por otra parte este 'como' es deliberadamente incompleto, centrado específicamente en trabajar con gettext para calcurse. Para una información mas completa deberás dirigirte al manual de GNU gettext en:

                http://www.gnu.org/software/gettext/manual/
        
Básicamente, hay tres tipos de personas diferentes que están involucradas en la cadena de traducción: programadores, coordinadores de lenguaje y traductores. Después de una rápida descripción de como funcionan las cosas, las tareas del traductor se describen a continuación.

Descripción

Para que se muestren mensajes en la lengua nativa del usuario, se requieren dos pasos: internacionalización (i18n) y localización (l10n). i18n se refiere a como hacer que calcurse soporte múltiples lenguas. Esto es realizado por programadores, quienes seleccionan los textos traducibles y proporcionan una manera de que se muestren traducidos en el arranque. l10n se refiere a como hacer que el calcurse internacionalizado se adapte a la lengua especifica del usuario, p.e. traduciendo las sentencias previamente marcadas por los desarrolladores y seleccionando el entorno correcto para que calcurse utilice el resultado de esta traducción.

Entonces, las sentencias traducibles son primero marcadas por los programadores dentro de el código fuente de los archivos en código C, y después recogidas en un archivo plantilla (calcurse.pot - la extensión pot significa portable object template). El contenido de esta plantilla es entonces combinado con los ficheros de traducción para cada lengua (fr.po para francés por ejemplo - donde po significa portable object, lo cual quiere decir que puede ser leído y editado por humanos). Un equipo de traducción dado, cogería este archivo, traduciría estas sentencias y se las mandaría de nuevo a los desarrolladores. En el momento de la compilación, una versión binaria de esta archivo (por razones de eficacia) producirá (fr.mo - donde mo significa machine object, lo que quiere decir que puede ser leído por programas), y entonces instalado. Ahora calcurse utilizara este archivo en el arranque, traduciendo las sentencias acorde con la configuración del locale del usuario.

Tareas del traductor

Supongamos que alguien quiere iniciar la traducción de una nueva lengua. Estos son los pasos a seguir:

Archivos-po

El formato de los archivos-po es muy simple. De hecho, los archivos-po están formados de cuatro cosas:

  1. lineas de localización: te dicen donde están las sentencias (nombre del archivo y numero de linea), en caso de que necesites un poco mas de contexto.
  2. lineas msgid: las sentencias a traducir.
  3. lineas msgstr: las sentencias traducidas.
  4. lineas con prefijo '#': comentarios (algunos con un significado especial, como veremos más abajo).
Básicamente, todo lo que tienes que hacer es llenar las lineas msgstr con la traducción de la linea msgid de encima.

Algunas notas:

Enlaces

Esta sección contiene enlaces y referencias que pueden ser de tu interés.

Pagina web de calcurse

La pagina web de calcurse es:

	http://culot.org/calcurse
	

Lista de anuncios de calcurse

Si estas interesado en el proyecto y quieres ser avisado cuando salga una nueva versión, puedes suscribirte a la lista de anuncios de calcurse. Si lo haces, recibirás un email tan pronto como una nueva funcionalidad se añada a calcurse.
Para suscribirte a la lista, envía un email a : calcurse-announce@culot.org poniendo "subscribe" en el asunto.

calcurse RSS feed

Otra posibilidad para enterarte de cuando aparecen nuevas versiones de Calcurse es seguir el RSS feed en:

	http://culot.org/calcurse/news_rss.xml
	
Este RSS feed es actualizado cada vez que hay una nueva version de Calcurse disponible describiendo las nuevas caracteristicas.

Gracias a ...

Es la hora de dar las gracias a personas sin las que este programa ¡ no existiría ! Por eso esta es una lista de las personas que contribuyeron y a las que me gustaría dar las gracias :


Y por último, muchas muchas gracias a todos los usuarios de calcurse que me han enviado sus comentarios.
Copyright (c) 2004-2007 Frédéric Culot
Traducido al Español por José López <testinground.at.gmail.dot.com>
Calcurse version 1.9 - Last change: Aug 18, 2007