CALCURSE - organiseur en mode texte
calcurse
est un organiseur personnel en mode texte,
qui a pour but de gérer les rendez-vous et les tâches
à faire. Il est composé d'un calendrier, d'une
liste de tâches, et classe les rendez-vous.
L'interface utilisateur est configurable, et l'on peut
choisir entre différents thèmes graphiques (couleur et
disposition des élements de l'interface).
Toutes les commandes sont documentées dans un système
d'aide en ligne.
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.
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 parmis de nombreuses combinaisons possibles de couleurs
et de positions des fenêtres.
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/
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 si 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.hDans 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.
Vous devez tout d'abord décompresser l'archive source de la manière suivante :
tar zxvf calcurse-1.6.tar.gzUne fois que vous remplissez tous les pré-requis nécessaires à l'installation, le processus de compilation est simple et suit les trois étapes usuelles :
./configure
make
make install
(peut nécessiter les privilèges
super-utilisateur)
./configure --help
.
Lors de son appel en ligne de commande, calcurse
accepte les arguments suivants :
-a
-c
~/.calcurse/apts
(voir la section Fichiers).-d
calcurse -d 3
fera
s'afficher les rendez-vous pour aujourd'hui, demain
et après-demain.-h
-n
-t
-v
calcurse
, puis quitte.
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 calcurseoù fr_FR doit être remplacé par la locale (code de la langue suivi du code pays) correspondant à la traduction voulue.
calcurse
:
LC_ALL=fr_FR.ISO8859-1 calcurse
Lorsque il est appelé avec au moins un des arguments suivants:
-a
, -d
, -h
,
-n
, -t
, -v
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 ce manière, il est possible de rajouter une ligne telle
que 'calcurse -ta'
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.
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 statusLe 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ée à une journée en particulier. 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.
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 |___todoLe fichier conf contient la configuration de l'utilisateur.
A 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.
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 parmis 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ées
en appuyant sur 'N'.
Ces options contrôlent le comportement général de
calcurse
, comme décrit ci-dessous :
sauvegarde_automatique
(valeur par défaut: oui)calcurse
.confirmer_pour_quitter
(valeur par défaut: oui)calcurse
sans demander confirmation.confirmer_pour_effacer
(valeur par défaut: oui)masquer_messages_système
(valeur par défaut: non)masquer_barre_progression
(valeur par défaut: non)semaine_commence_lundi
(valeur par défaut: oui)calcurse
d'indiquer quel est le premier
jour de la semaine, à savoir soit le lundi, soit le dimanche.
Si l'option semaine_commence_lundi est fixée à
oui, les semaines du calendrier commenceront le lundi.
Par contre si cette option est fixée à non,
les semaines débuteront le dimanche.
Le thème graphique de calcurse
est
configurable et doit être choisi en appuyant sur le
numéro correspond à la couleur voulue. 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:
$TERM
,
la couleur peut être supportée ou non. Un message
d'erreur apparaîtra si vous essayez d'appliquer un
thème graphique en couleur alors que votre terminal est
monochrome.calcurse
ne veut pas les afficher,
essayez de changer la valeur de la variable d'environnement
$TERM
(appliquez par exemple la valeur
xterm-xfree86).
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.
Les options suivantes permettent de modifier les réglages de la barre de notification:
barre-notification_afficher
(valeur par défaut: oui)barre-notification_date
(valeur par défaut: %a %F)barre-notification_heure
(valeur par défaut: %T)barre-notification_alerte
(valeur par défaut: 300)
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)."
Merci de renvoyer vos rapports de bogues et vos commentaires à l'adresse suivante :
calcurse@culot.orgou directement à l'auteur :
frederic@culot.org
Si vous désirez contribuer au projet, vous pouvez tout d'abord
envoyer vos commentaires sur ce qui vous plais ou déplais 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.
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
.
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.
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
multilingues. 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 auw 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 execution pour traduire les phrases dans la langue
de l'utilisateur.
Supposons que quelqu'un veuille commencer une traduction dans une nouvelle langue. Voici les étapes à suivre pour ce faire :
LC_ALL
pour obtenir la version traduite du logiciel (voir Variable d'environnement
pour l'i18n).'msginit -i calcurse.pot -o fr.po -l fr --no-translator'Si vous n'avez pas
msginit
installé sur
votre système, vous pouvez plus simplement copier
calcurse.pot en fr.po par exemple, et editer
l'en-tête du fichier nouvellement créé
manuellement.Le format des fichiers po est assez simple. En effet, ils ne contiennent que quatre éléments différents :
Remarques:
"#, fuzzy"
.
calcurse
n'utilisera pas les traductions
commençant par ce commentaire, à moins que vous
ne transformiez ces phrases. En effet, le commentaire
fuzzy signifie que la phrase a déjà
été traduite mais qu'elle a depuis
été changée dans le source du programme,
ou bien que gettext a effectué lui-même
uen traduction, en se basant sur une phrase similaire. Cela
implique donc que vous devez vérifier la traduction.
Parfois, la phrase originale a changé suite à
une correction de faute de frappe. Dans ce cas, vous n'aurez
pas besoin de modifier la traduction. Mais dans d'autres cas,
cette traduction peut ne plus être valable et
nécessitera alors une mise à jour. Une fois
cette mise à jour effectuée, vous pouvez
supprimer
le commentaire "#, fuzzy"
, et la traduction sera
alors à nouveau prise en compte par calcurse
."#,
c-format"
. Cela signifie que des parties du texte
à traduire ont une signification particulière
pour le programme, et qu'il ne faut pas les modifier. Par
exemple, les séquences contenant des %, comme
"%s"
. Cela signifie que calcurse
remplacera ces séquences par d'autres expressions. Il
est donc important de ne pas les modifier. Il existe
également des séquences contenant des
/, comme \n
ou \t
. Il ne
faut pas les modifier non plus. En effet, la première
séquence représente une fin de ligne, et la
deuxième une tabulation.msgid "" "une ligne très longue" "une autre ligne"
"Content-Type: text/plain; charset=utf-8\n"Il est également nécessaire de remplir le champ Last-Translator - Dernier Traducteur, afin que d'autres traducteurs potentiels puissent se mettre en relation avec la dernière personne ayant retouché le fichier. De cette manière, il est plus simple de coordonner les efforts de traduction. Il est possible de rajouter son adresse de courrier électronique, par exemple:
"Last-Translator: Frederic Culot <frederic@culot.org>\n"
calcurse
est un programme comportant une
interface console/curses, il dépend donc de la taille
du terminal utilisé (plus particulièrement du
nombre de colonnes). Il est important de garder ceci en
mémoire au moment de la traduction. Souvent, la phrase
à traduire doit tenir dans une seule ligne (soit en
général 80 caractères). Il faut en tenir
compte, et essayer de voir où la phrase sera
placée pour adapter sa traduction.poEdit
(
http://www.poedit.org/)
KBabel
(
http://i18n.kde.org/tools/kbabel/)
GTranslator
(
http://gtranslator.sourceforge.net/)
Emacs
et son mode po
Vim
et son mode po
Cette section contient des liens en relation avec
calcurse
qui peuvent vous être utiles.
calcurse
La page web de calcurse
est à l'adresse suivante :
http://culot.org/calcurse
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.
Je voudrais remercier ici toutes les personnes sans qui ce projet n'aurait jamais pu voir le jour! En particulier :
C
calcurse
calcurse
pour Debian
calcurse
pour
Archlinux
calcurse
pour
Mac OsX
calcurse
calcurse
et de son manuel
calcurse
et de son manuel
vim
pour les touches de déplacement
orpheus
et abook
pour la documentation
pine
et aptitude
pour l'interface en mode texte
calcurse
qui m'ont fait parvenir leur commentaires.