CALCURSE - organiseur en mode texte


Table des matières


Introduction

calcurse est un logiciel composé d'un calendrier et d'un organiseur personnel en mode texte. Il permet de stocker les évènements et rendez-vous, ainsi qu'une liste de tâches à effectuer. Un système de notification, entièrement configurable par l'utilisateur, permet d'être prévenu lorsque l'heure d'un rendez-vous approche. L'interface utilisateur est elle aussi configurable, et peut s'adapter aux besoins de chacun. Enfin, un système d'aide en ligne permet d'obtenir des renseignements sur toutes les commandes disponibles.

Aperçu du logiciel

Origine de Calcurse

J'ai commencé à penser à ce projet à la fin de mon doctorat en astrophysique... Je commençais en effet à avoir de plus en plus de mal à m'organiser, et j'avais vraiment besoin d'un bon outil pour m'aider dans cette tâche difficile ;)
D'autre part, j'apprécie beaucoup les logiciels qui font appel à des Interfaces en Mode Texte, parce que je les trouve plus simples, plus rapides, plus portables et plus efficaces. J'ai alors commencé à programmer un calendrier rudimentaire qui utilisait une interface de ce type. En plus de cela, je voulais améliorer mes connaissances en C, langage de programmation que je n'avais utilisé jusqu'alors que dans le cadre de petits projets pendant mes études. J'ai donc pensé que ce serait une bonne chose de me lancer dans ce projet, puisque cela me permettrait à la fois de mieux m'organiser, et d'apprendre à mieux programmer en C! Malheureusement, j'ai obtenu mon doctorat avant de terminer calcurse, mais j'ai tout de même voulu continuer à travailler sur ce projet, en espérant que ce programme serait utile à d'autres personnes. Voilà comment est né calcurse...

Mais au fait, pourquoi 'calcurse' ? Et bien ce nom provient simplement de la concaténation de 'CALendrier' et de 'nCURSEs', qui est le nom de la librairie utilisée pour construire l'interface utilisateur.

Caractéristiques importantes

Calcurse est multi-plateformes et est conçu pour être léger, rapide et fiable. Il doit être utilisé dans un terminal ou une console, soit localement ou bien sur une machine distante par l'intermediaire d'une liaison ssh (ou similaire).
Calcurse peut être lancé dans deux modes différents: soit interactif, soit non-interactif. Le premier mode permet de visualiser son organiseur personnel pratiquement sous n'importe quel environnement, grâce à l'interface en mode texte. Le deuxième mode permet de créer facilement des penses-bête en ajoutant calcurse avec les arguments appropriés dans la table cron ou dans le script d'initialisation du shell.
De plus, calcurse a été créé en prenant en compte l'utilisateur final à chaque étape de sa conception, c'est-à-dire en essayant d'être le plus intuitif possible. Cela implique la présence d'une aide en ligne exhaustive, ainsi que le rappel de toutes les commandes possibles dans la barre de status. L'interface utilisateur est également configurable, et l'on peut choisir parmi de nombreuses combinaisons possibles de couleurs et de positions des fenêtres. Enfin, le système de notification est entièrement configurable, l'utilisateur peut donc choisir la manière dont il veut être prévenu de l'approche d'un rendez-vous.

Installation

Pré-requis

Librairie ncurses

L'installation de Calcurse ne nécessite qu'un compilateur C, comme cc ou gcc, et la librairie ncurses. Il serait très surprenant que vous n'ayez pas déjà la librairie ncurses d'installée sur votre machine, mais si c'est le cas, vous pourrez la trouver à l'adresse suivante :

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

Librairie gettext

calcurse s'aide de la librairie gettext pour le support de l'internationalisation (noté i18n ci-après). Cela signifie que calcurse peut fournir des messages multilingues s'il est compilé avec le support NLS (Native Language Support - Support de Langage Natif). Cependant, ce support est optionnel et si vous n'avez pas besoin de la traduction des messages affichés, vous pouvez sésactiver cette option. La désactivation du support NLS s'effectue en passant l'option --disable-nls à configure (voir la section Processus d'Installation).
Pour vérifier que les utilitaires gettext sont bien installés sur votre systsème, vous pouvez par exemple vérifier la présence du fichier libintl.h en tapant :

                locate libintl.h
        
Dans l'éventualité où ce fichier ne serait pas trouvé, vous pouvez obtenir les sources de gettext à l'adresse suivante :
                 http://ftp.gnu.org/pub/gnu/gettext/
        
Remarque: Même si libintl.h est bien localisé par la commande précédente, il peut être utile de spécifier son emplacement au moment de lancer le processus d'installation, en passant l'option --with-libintl-prefix au script configure. En effet, ce script pourrait ne pas trouver le fichier libintl.h si celui-ci n'est pas installé dans un endroit usuel.

Processus d'installation

Vous devez tout d'abord décompresser l'archive source de la manière suivante :

	tar zxvf calcurse-1.9.tar.gz
	
Une fois que vous remplissez tous les pré-requis nécessaires à l'installation, le processus de compilation est simple et suit les trois étapes usuelles :
  1. ./configure
  2. make
  3. make install (peut nécessiter les privilèges super-utilisateur)
Vous pouvez obtenir la liste des options possibles en tapant ./configure --help.

Présentation générale

Invocation

Arguments en ligne de commande

Lors de son appel en ligne de commande, calcurse accepte les arguments suivants (les arguments courts ou longs sont supportés) :

-a, --appointment
Affiche les rendez-vous pour la date du jour, puis quitte.
Remarque: le calendrier à utiliser peut être spécifié en utilisant l'option '-c'.

-c <fichier>, --calendar <fichier>
Spécifie le fichier calendrier à utiliser.
Le calendrier par défaut est celui contenu dans ~/.calcurse/apts (voir la section Fichiers).

-d <date|num>, --day <date|num>
Affiche les rendez-vous pour la date ou pour le nombre de jours indiqués, suivant le format de l'argument. Deux formats différents sont acceptés : Dans le premier cas, la liste des rendez-vous pour la date spécifiée sera affichée, alors que dans le deuxième cas, la liste des rendez-vous pour les 'n' jours à venir sera retournée.
Par exemple, taper calcurse -d 3 fera s'afficher les rendez-vous pour aujourd'hui, demain et après-demain.
Remarque: comme pour l'option '-a', le fichier contenant le calendrier à lire peut être spécifié en utilisant l'option '-c'.

-h, --help
Affiche l'aide décrivant les options en ligne de commande, puis quitte.

-n, --next
Affiche le rendez-vous suivant dans les prochaines 24 heures, puis quitte.
Le temps indiqué représente le nombre d'heures et de minutes restantes avant le rendez-vous.
remarque: le fichier contenant le calendrier à lire peut être spécifié en utilisant l'option '-c'.

-t[num], --todo[=num]
Affiche la liste des 'todo', puis quitte. Si le nombre optionnel num est indiqué, alors uniquement les tâches ayant une priorité égale à num seront affichées.
remarque: num doit être compris entre 1 (priorité la plus grande) et 9 (priorité la moins grande).

-v, --version
Affiche la version de calcurse, puis quitte.

-x, --export
Exporte les données utilisateur au format iCalendar. Les évènements, rendez-vous et tâches sont convertis et imprimés sur la sortie standard.
Note: afin de sauvegarder les données exportées dans un fichier, il est nécessaire de rediriger la sortie standard en utilisant une commande comme celle-ci:
	        $ calcurse --export > mon_fichier.ics
	

Variable d'environnement pour l'i18n

calcurse peut être compilé avec le support NLS (voir Librairie gettext). Ainsi, si vous voulez que les messages affichés apparaissent dans votre langue natale, assurez-vous tout d'abord que celle-ci est présente dans le fichier po/LINGUAS. Ce fichier indique toutes les traductions disponibles par l'intermédiaire d'un code de deux lettres (par exemple, fr représente le français). Si vous ne trouvez pas votre langue, il serait très apprécié que vous apportiez votre aide pour traduire calcurse (voir la partie Comment contribuer?).
Si votre langue est disponible, lancez calcurse en utilisant la commande suivante :

                LC_ALL=fr_FR calcurse
        
fr_FR doit être remplacé par la locale (code de la langue suivi du code pays) correspondant à la traduction voulue.
Il est également recommandé de spécifier le codage à utiliser, car dans certains cas des problèmes d'affichage des accents peuvent survenir. Ce codage est indiqué au début du fichier po correspondant à la langue voulue. Par exemple, vous pouvez remarquer dans le fichier fr.po que le codage utilisé est iso-8859-1. Vous pouvez donc le préciser au lancement de calcurse:
		LC_ALL=fr_FR.ISO8859-1 calcurse
	

Interface utilisateur

Mode non-interactif

Lorsque il est appelé avec au moins un des arguments suivants:
-a, -d, -h, -n, -t, -v, -x
calcurse est lancé en mode non-interactif. Cela signifie que l'information demandée sera affichée, puis calcurse quittera et vous serez ramené au prompt de l'interpréteur de commandes.
De cette manière, il est possible de rajouter une ligne telle que 'calcurse --todo --appointment' dans le fichier d'initialisation de son environnement, afin de faire s'afficher à chaque début de session la liste des tâches à faire et des rendez-vous planifiés pour la journée.

Mode interactif

Lorsqu'il est appelé sans aucun argument ou uniquement avec l'option '-c', calcurse est lancé en mode interactif. Dans ce mode s'affiche une interface qui contient trois panneaux différents, qu'il est possible de sélectionner cycliquement en utilisant la touche 'TAB', ainsi que d'une barre de notification et une autre de status (voir la figure ci-dessous).


 panneau rendez-vous---.                             .---panneau calendrier
                       |                             |  
                       v                             v
 +------------------------------------++----------------------------+
 |           Rendez-vous              ||         Calendrier         |
 |------------------------------------||----------------------------|
 |                 (|)  Avril 6, 2006 ||         Avril 2006         |
 |                                    ||Lun Mar Mer Jeu Ven Sam Dim |
 |                                    ||                      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 |
 |                                    ||                            |
 |                                    |+----------------------------+
 |                                    |+----------------------------+
 |                                    ||           Tâches           | panneau
 |                                    ||----------------------------| tâches à
 |                                    ||                            |  faire
 |                                    ||                            |   |
 |                                    ||                            |<--.
 |                                    ||                            |
 +------------------------------------++----------------------------+
 |---[ Lun 22-11-2006 | 18:11:43 ]---(apts)----> 01:20 :: dîner <---|<--.
 +------------------------------------------------------------------+ barre de
 | ? Aide     R Retracer  H/L -+1 Jour      G Aller à    C Config   |    notification 
 | Q Quitter  S Sauver    J/K -+1 Sem.    Tab Chg vue               |<-. 
 +------------------------------------------------------------------+  |
                                                                       |
                                                               barre de status

        
Le premier panneau représente un calendrier qui permet de sélectionner un jour en particulier. Le second panneau contient une liste d'évènements et les rendez-vous du jour, et le dernier contient une liste des tâches à faire, mais qui ne sont pas assignées à une journée en particulier.
On peut remarquer dans le panneau des rendez-vous le signe '(|)' placé juste devant la date. Ce signe représente la phase de la lune. En fonction de la phase actuelle de celle-ci, un des signes suivants peut-être indiqué :

Tout en bas de l'écran on retrouve une barre de status, qui indique les actions possibles en fonction du contexte, ainsi que la touche qui doit être pressée pour effectuer cette action.
Juste au-dessus de cette barre se trouve la barre de notification, qui indique les informations suivantes, de gauche à droite : la date du jour, l'heure courante, le fichier calendrier actuellement ouvert (il s'agit de apts dans la copie d'écran, qui est le fichier par défaut, comme indiqué dans la section suivante), et le premier rendez-vous programmé dans les prochaines 24 heures. Dans cet exemple, il s'agit d'un dîner qui aura lieu dans une heure et vingt minutes.

Remarque: Certaines actions, comme éditer ou ajouter un elément, nécessitent de renseigner du texte par l'intermédiaire de l'éditeur de ligne de commande fournit avec calcurse.
Dans cet éditeur, si la ligne de commande est plus longue que la largeur de l'écran, le caractère '>', '*', ou '<' sera rajouté dans la dernière colonne s'il reste du texte après, avant et après, ou avant la position courante, respectivement. La ligne défile horizontalement si nécessaire.
De plus, il existe des combinaisons de touches pour effectuer certaines actions courantes utiles lors de l'édition de textes. Voici ces raccourcis:

Fichiers

La structure de fichiers suivante est créée dans le répertoire $HOME de l'utilisateur la première fois que calcurse est lancé :

        $HOME/.calcurse/
                  |___conf
                  |___apts
                  |___todo
        
Le fichier conf contient la configuration de l'utilisateur.
Le fichier apts contient tous les événements ainsi que les rendez-vous de l'utilisateur.
Le fichier todo contient la liste des tâches à effectuer.

Aide en ligne

À n'importe quel moment, le système d'aide en ligne peut être appelé en pressant la touche '?'. Une fois rentré dans l'aide, les informations sur une commande spécifique peuvent être obtenues en appuyant sur la touche correspondant à cette commande.

Options

Tous les paramètres de calcurse sont configurables à partir du menu Configuration, accessible en appuyant sur 'C'. L'utilisateur se voit alors présenté un second menu avec trois choix possibles : appuyer à nouveau sur 'C' amène au menu de sélection des couleurs de l'interface, appuyer sur 'L' permet de choisir parmi différents emplacements pour les panneaux de la fenêtre principale de calcurse, appuyer sur 'G' vous permet de fixer les options générales, et enfin les paramètres de la barre de notification peuvent être fixés en appuyant sur 'N'.

Options générales

Ces options contrôlent le comportement général de calcurse, comme décrit ci-dessous :

Thèmes graphiques

Le thème graphique de calcurse peut être adapté aux besoins de l'utilisateur. Pour changer les options par défaut, la page de configuration permet de sélectionner la couleur voulue pour l'interface (premier plan et fond). L'utilisateur doit pour cela se déplacer sur la bonne couleur en utilisant les touches flèches ou les touches de déplacement par défaut, et appuyer sur 'X' ou la barre d'espace pour sélectionner la couleur. Il est également possible de conserver la couleur par défaut du terminal de l'utilisateur en sélectionnant le choix corresondant dans la liste.

Cette couleur est alors appliquée à la bordure des panneaux, aux titres, aux combinaisons de touches, et aux informations générales affichées dans la barre de status. Un thème en noir et blanc est également disponible, afin de supporter les terminaux monochromes.
Remarques:

Disposition des panneaux

La disposition des panneaux à l'intérieur de la fenêtre de calcurse peut être paramétrée. Par défaut, le panneau contenant le calendrier se situe en haut à droite de la fenêtre, le panneau contenant la liste des tâches est situé en bas à droite, et le panneau contenant les rendez-vous se trouve sur la partie gauche de l'écran (voir la figure dans la section Mode interactif pour un exemple de la disposition par défaut).
En choisissant une autre disposition pour les éléments composants la fenêtre de calcurse, l'utilisateur peut adapter à ses besoins l'interface du programme.

Réglages de la barre de notification

Les options suivantes permettent de modifier les réglages de la barre de notification:

Bogues connus

Une coloration incorrecte des objets peut résulter d'une utilisation conjointe d'un thème graphique en noir et blanc et d'une variable $TERM fixée à xterm-color. Pour supprimer ce bogue, et comme le conseille Thomas E. Dickey (le résponsable du projet xterm), xterm-xfree86 devrait être assigné à la variable $TERM en lieu et place de xterm-color :

"La valeur xterm-color pour la variable $TERM est un mauvais choix pour les terminaux XFree86 parce qu'elle est couramment utilisée pour les entrées terminfo qui ne supportent pas bce. Utilisez plutôt l'entrée xterm-xfree86 qui est distribuée avec le xterm d'XFree86 (ou par celui, similaire, distribué avec ncurses)."

Rapporter les bogues et commentaires

Merci de renvoyer vos rapports de bogues et vos commentaires à l'adresse suivante :

        calcurse@culot.org
        
ou directement à l'auteur :
        frederic@culot.org
        

Comment contribuer?

Si vous désirez contribuer au projet, vous pouvez tout d'abord envoyer vos commentaires sur ce qui vous plaît ou déplaît ou sur ce qui vous manque dans calcurse.
Pour le moment, les contributions possibles concernent la traduction des messages de calcurse ainsi que de la documentation.

Remarque: toute contribution à la traduction de calcurse serait très appréciée, mais avant tout, envoyez un mail à calcurse-i18n@culot.org pour savoir si quelqu'un a déjà commencé le processus de traduction dans votre langue.

Traduction de la documentation

Le répertoire doc/ du paquet source contient déjà des versions traduites de la documentation. Cependant, si celle-ci n'est pas encore disponible dans votre langue, votre aide pour sa traduction serait très appréciée.
Pour cela, il suffit de copier un des fichiers existant et de renommer cette copie en manual_XX.html, où XX représente votre langue. Il faut ensuite traduire ce fichier nouvellement créé et de l'envoyer à l'auteur (voir Rapporter les bogues et commentaires), pour qu'il soit inclus dans la prochaine version de calcurse.

Traduction de calcurse

Comme mentionné plus haut, les utilitaires gettext sont utilisés par calcurse pour produire des messages multilingues. Cette section explique comment traduire ces messages dans votre langue. Cependant, cette notice est délibérément incomplète, puisqu'elle ne se concentre que sur l'utilisation de gettext avec calcurse. Pour avoir une vision plus large du Support de Langage Natif (NLS), il est préférable de se référer au manuel de GNU gettext que l'on peut trouver à l'adresse suivante :

                http://www.gnu.org/software/gettext/manual/
        
Pour résumer, trois catégories de personnes sont impliquées dans la chaîne de traduction : les programmeurs, les coordinateurs de la traduction, et les traducteurs. Après un rapide aperçu de la manière de procéder pour traduire le logiciel, nous décrirons plus en détails les tâches du traducteur.

Aperçu

Afin de pouvoir afficher du texte dans la langue natale de l'utilisateur, deux étapes sont nécessaires : l'internationalisation (i18n), et la localisation (l10n). l'i18n permet à calcurse d'être multilingue. C'est un processus qui est mis en place par les programmeurs, qui marquent les phrases à traduire au sein du code source, et qui fournissent les outils pour que ces phrases soient traduites automatiquement pendant le déroulement du programme. La l10n correspond quant à elle au processus qui permet à calcurse de s'adapter à la langue de l'utilisateur. C'est-à-dire qu'il traduit les phrases précédemment marquée par les programmeurs, et qu'il fixe correctement les variables d'environnement afin que calcurse puisse utiliser les résultats de cette traduction.

Ainsi, les phrases traduisibles sont tout d'abord marquées par les programmeurs dans le code source, puis rassemblées dans un fichier référence (calcurse.pot - l'extension pot signifiant portable object template, objet portable de référence). Le contenu de ce fichier est alors associé aux fichiers contenant la traduction pour chacune des différentes langues (fichier fr.po pour le français par exemple - po siginifiant portable object, objet portable - qui peut être lu par les humains). Le traducteur devra se servir de ce fichier, et traduira les phrases qu'il contient, puis l'enverra aux développeurs. Ensuite, au niveau de la compilation du programme, une version binaire de ce fichier sera produite (pour des raisons d'efficacité), puis installée. Cette version binaire a pour extension .mo, où mo signifie machine object - objet machine, c'est-à-dire qui peut être lu par le programme. Pour finir, calcurse se servira de ce fichier mo lors de son exécution pour traduire les phrases dans la langue de l'utilisateur.

Etapes de la traduction

Supposons que quelqu'un veuille commencer une traduction dans une nouvelle langue. Voici les étapes à suivre pour ce faire :

Fichiers po

Le format des fichiers po est assez simple. En effet, ils ne contiennent que quatre éléments différents :

  1. ligne d'emplacement: renseigne sur l'emplacement de la phrase dans le fichier source (donne le nom du fichier ainsi que le numéro de ligne), afin de retrouver simplement le contexte d'où est issu la phrase à traduire.
  2. ligne msgid: indique la phrase à traduire.
  3. ligne msgstr: ligne indiquant la phrase traduite.
  4. lignes commençant par '#': indiquent des commentaires (certains ont une signification spéciale, comme nous le verrons plus tard).
Pour résumer, un traducteur doit simplement remplir les champs msgstr avec la traduction des lignes trouvées juste au-dessus dans la partie msgid.

Remarques:

Liens

Cette section contient des liens en relation avec calcurse qui peuvent vous être utiles.

Site internet de calcurse

La page web de calcurse est à l'adresse suivante :

	http://culot.org/calcurse
	

Liste de diffusion de calcurse

Si vous êtes interessé par ce projet et que vous souhaitez être prévenu lorsqu'une nouvelle version est diffusée, vous pouvez souscrire à la liste de diffusion de calcurse. De cette manière, vous recevrez un mél dès qu'une nouvelle version est disponible.
Pour souscrire à cette liste, envoyez un message à l'adresse calcurse-announce@culot.org avec "subscribe" dans le sujet du mél.

Flux RSS

Une autre possibilité pour être prévenu lorsqu'une nouvelle version de calcurse est disponible est de s'abonner au flux RSS suivant :

	http://culot.org/calcurse/news_rss.xml
	
Ce flux RSS est mis à jour dès qu'une nouvelle version de calcurse est diffusée, et indique quelles sont les modifications qui ont été apportées.

Remerciements

Je voudrais remercier ici toutes les personnes sans qui ce projet n'aurait jamais pu voir le jour! En particulier :

Et pour terminer, un très grand merci à tous les utilisateurs de calcurse qui m'ont fait parvenir leurs commentaires.
Copyright (c) 2004-2007 Frédéric Culot
Calcurse version 1.9 - Dernière modification: 18 Août 2007