CALCURSE - textbasierender Terminkalender


Inhaltsverzeichnis


Einleitung

calcurse ist ein textbasierender persönlicher Terminkalender, der Ihnen bei der Organisation von Terminen und täglichen Aufgaben hilft. Er beinhaltet einen Kalender sowie eine 'todo'-Liste, die Ihre Termine ordnet. Das Benutzer-Interface ist einstellbar. Terminalfarben und Layout lassen sich individuell anpassen. Alle Kommandos sind dokumentiert und können zur Laufzeit jederzeit erfragt werden.

Überblick

Anlass

Nachdem ich mein Diplom in Astrophysik absolviert hatte, kam mir die Idee dieses Programm zu schreiben. Alles begann etwas unorganisiert zu werden. Ein Programm, dass mir bei meiner Terminplanung etwas hilft, war wirklich vonnöten. ;)
Ich mag Programme mit Textinterfaces, weil sie einfach, schnell, portabel und effizient sind. Also dachte ich darüber nach ein Programm mit textorientiertem Benutzer-Interface zu entwickeln. Darüber hinaus wollte ich meine Kenntnisse in der Programmiersprache C erweitern. Im Grundstudium kam ich mit C erstmals in Kontakt. Ich denke es ist eine gute Idee ein solches Projekt zu beginnen und dabei meine Kenntnisse in C zu erweitern! Mein Diplom habe ich nun absolviert, calcurse ist aber noch immer nicht fertig. Nach wie vor entwickle ich dieses Programm weiter, in der Hoffnung, dass es für andere von Nutzen sein wird. Also hier ist es...

Doch warum nenne ich es 'calcurse'? Nun, es ist einfach zusammengesetzt aus den Wörtern 'CALendar' und 'nCurses', dem Namen der Bibliothek die für das Benutzer-Interface verwendet wird.

Wichtige Eigenschaften

Calcurse ist portabel und setzt sich zum Ziel klein, schnell und sicher zu sein. Es ist auf einer Konsole oder einem Terminal zu verwenden, entweder lokal oder auf einem entfernten System mithilfe einer ssh-Verbindung (oder ähnlichem).
Calcurse kann in zwei unterschiedlichen Modi gestartet werden: ein interaktiver und nicht-interaktiver Modus. Der erste Modus erzeugt Dank des textbasierenden Interfaces die Ansicht eines eigenen persönlichen Terminkalenders. Mit dem zweiten Modus ist es möglich sich ein Erinnerungstool (Reminder) zu erstellen, wenn calcurse mit den entsprechenden Argumenten in 'cron tab' oder einem 'init script' eingebunden wird.
Darüber hinaus ist calcurse für Benutzer erstellt worden, mit der Absicht so benutzerfreundlich wie möglich zu sein. Das bedeutet, dass eine komplette Onlinehilfe im Programm zu Verfügung steht, sowie alle mögliche Aktionen zu jeder Zeit in einer Statuszeile ersichtlich sind. Das Benutzer-Interface ist ebenfalls einstellbar. Ebenso kann man verschiedene Textfarben und Layouts wählen.

Installation

Voraussetzungen

ncurses Bibliothek

Calcurse benötigt einen C-Compiler wie etwa cc oder gcc. Ferner wird die ncurses-Bibliothek benötigt, dass aber auf den meisten Unix-Systemen verfügbar sein sollte. Falls nicht, kann es von folgender URL herunter laden:

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

gettext Bibliothek

calcurse unterstützt die Internationalisierung (künftig i18n) durch gettext. Das bedeutet, dass calcurse mehrsprachige Mitteilungen erzeugen kann, wenn es mit der entsprechenden Sprachunterstützung kompiliert wurde (z.B. NLS). Dennoch, NLS ist optional und wenn keine mehrsprachigen Mitteilungen gewünscht sind, kann diese Eigenschaft abgestellt werden. Einfach die Option --disable-nls dem configure Skript übergeben (siehe Abschnitt Installationsprozess).
Um zu überprüfen, ob gettext auf dem System installiert ist, kann man nach der libintl.h Datei suchen:

                locate libintl.h
        
Wenn diese Datei nicht gefunden wird, kann gettext von folgender URL herunter geladen werden:
                 http://ftp.gnu.org/pub/gnu/gettext/
        
Beachte: Auch wenn libintl.h auf dem System gefunden wurde, kann es erforderlich sein den Pfad dieser Datei während des Installationsprozesses anzugeben. Die entsprechende Option für das configure Skript lautet dann --with-libintl-prefix. Das configure Skript wird natürlich vorzeitig abbrechen, wenn die dazugehörige Bibliothek nicht gefunden wurde.

Installationsprozess

Als erstes müssen die Dateien entpackt werden:

        tar zxvf calcurse-1.6.tar.gz
Wenn Sie die Voraussetzungen erfüllen und das Archiv entpackt vorliegen, sind nur noch die drei üblichen Schritte erforderlich:
  1. ./configure
  2. make
  3. make install (mit Root-Rechten)
Benutzen Sie ./configure --help um eine Liste mit den verfügbaren Optionen zu erhalten.

calcurse Grundlagen

Programmaufruf

Programmargumente

Calcurse kann mit folgenden Optionen aufgerufen werden:

-a
Gibt die Termine eines anzugebenen Tags aus.
Beachte: Die Kalender-Datei, von der die Termine gelesen werden sollen, kann mit mithilfe der -c Option angegeben werden.

-c
Gibt die zu lesende Kalender-Datei an.
Der Standardkalender ist ~/.calcurse/apts (beachte auch Abschnitt: calcurse Dateien).

-d
Gibt die Termine eines angegebenen Datums aus oder gibt alle Termine der anzugebenen nachfolgenden Tage aus. Somit sind zwei mögliche Formate möglich:
  • Datum: 'MM/TT/JJJJ' (Monat, Tag, Jahr).
  • Anzahl der Tage: 'n'.
Im ersten Fall wird eine Liste mit allen Terminen des anzugebenen Datums ausgegeben. Der zweite Fall listet alle folgenden Termine auf, die in den nächsten 'n' Tagen zu erledigen sind.
Beispiel: die Eingabe calcurse -d 3 gibt alle Termine von heute, morgen und übermorgen aus.

-h
Gibt eine Hilfe zu den Unterstützten Optionen aus.

-n
Print the next appointment within next 24 hours and exit.

-t
Gibt die 'todo' Liste aus.

-v
Gibt die aktuelle Version von Calcurse aus.

Umgebungsvariable für i18n

calcurse kann mit einer Unterstützung für die Muttersprache kompiliert werden (siehe gettext Bibliothek). Wenn Meldungen in der Muttersprache gewünscht sind, sollte zunacht geprüft werden, ob die po/LINGUAS Datei verfügbar ist. Diese Datei zeigt alle verfügbaren Sprachen durch zweibuchstabige Kürzel an (z. B., fr steht für französisch). Wenn Ihre Sprache nicht aufgeführt ist, wäre es natürlich grossartig, wenn Sie sich an der Übersetzung von calcurse in andere Sprachen beteiligen könnten (siehe Abschnitt Wie kann ich einen Beitrag leisten?).
Wenn Ihre Sprache verfügbar ist, starten Sie calcurse mit dem folgenden Aufruf:

                LC_ALL=fr_FR calcurse
        
wobei fr_FR der Name der gewünschten Spracheausgabe ist und durch das Kürzel Ihrer Sprache ersetzt werden kann.
You should also specify the charset to be used, because in some cases the accents and such are not displayed correctly. This charset is indicated at the beginning of the po file corresponding to the desired language. For instance, you can see in the fr.po file that it uses the iso-8859-1 charset, so you could run calcurse using the following command:
		LC_ALL=fr_FR.ISO8859-1 calcurse
	

Benutzer-Interface

Nicht interaktiver Modus

Wird calcurse mit den Optionen:
-a, -d, -h, -n, -t, -v
gestartet, wird das Programm im nicht-interaktiven Modus ausgeführt. Das bedeutet, dass die gewünschten Informationen ausgegeben werden und das Programm anschließend sofort wieder beendet wird. So ist es möglich mit dem Aufruf calcurse -ta eine Liste aller Termine eines bestimmten Tages zu erhalten.

Interaktiver Modus

Ohne Angabe einer Option oder nur die Option -c startet calcurse im interaktiven Modus. In diesem Modus erhält man ein Interface mit drei unterschiedlichen Panels, die mit der 'TAB'-Taste angesteuert werden können, plus a notification bar sowie eine Status-Zeile (siehe unten).


      Termin-Panel---.                                   .---Kalender-Panel
                     |                                   |
                     v                                   v
 +------------------------------------++----------------------------+
 |          Termine                   ||          Kalender          |
 |------------------------------------||----------------------------|
 |                      6. April 2006 ||         April 2006         |
 |                                    ||Mon Die Mit Don Frei Sam Son|
 |                                    ||                      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 |
 |                                    ||                            |
 |                                    |+----------------------------+
 |                                    |+----------------------------+
 |                                    ||        Zu erledigen        | todo-
 |                                    ||----------------------------| Panel
 |                                    ||                            |   |
 |                                    ||                            |   |
 |                                    ||                            |<--.
 |                                    ||                            |
 +------------------------------------++----------------------------+
 |---[ Mon 2006-11-22 | 10:11:43 ]---(apts)----> 01:20 :: lunch <---|<--.
 +------------------------------------------------------------------+ notify-bar
 | ? Hilfe  R Neu zeichnen  H/L -/+1 Tag  G Gehe zu  C Einstellung  |
 | Q Verlassen   S Speichern   J/K -/+1 Woche   Tab ändere Ansicht  |<-.
 +------------------------------------------------------------------+  |
                                                                       |
                                                                 Statuszeile

Das Kalender-Panel hebt den gewünschten Tag farblich hervor, während das Termin-Panel die Liste mit Terminen des angesteuerten Tags anzeigt. Das todo-Panel dagegen zeigt eine Liste mit den zu erledigenden Aufgaben, die keinem bestimmten Tage zugeordnet sind. Die letzten beiden Zeilen des Interfaces zeigen die Status-Zeile, die über die möglichen Befehle und ihre entsprechenden Tasten informiert. Just above this status bar is the notify-bar, which indicates from left to right : the current date, the current time, the calendar file currently in use (apts on the above example, which is the default calendar file, see the following section), and the next appointment within the upcoming 24 hours. Here it says that it will be lunch time in one hour and twenty minutes.

calcurse Dateien

Die folgende Verzeichnisstruktur wird im $HOME-Verzeichnis angelegt, wenn calcurse das erste mal gestartet wird:

        $HOME/.calcurse/
                  |___conf
                  |___apts
                  |___todo
Die conf Datei enthält die Informationen zur Benutzerkonfiguration.
Die apts Datei enthält alle Termine.
Die todo Datei enthält die todo-Liste.

Online Hilfe

Das integrierte Hilfe-System kann jederzeit mit '?' aufgerufen werden. Informationen über bestimmte Befehle können mit der entsprechenden Taste des Befehls aufgerufen werden.

Optionen

Alle calcurse Parameter sind im Konfigurationsmenü einstellbar. Drücke Sie dazu die 'C'-Taste. Ein weiteres Untermenü erscheint mit drei weiteren Auswahlpunkten: Ein erneutes Betätigen der 'C'-Taste führt zur Farbeinstellung, die 'L'-Taste erlaubt die Auswahl eines anderen Layouts, das heisst die Anordnung der drei Panel kann hier geändert werden. Mit der 'G'-Taste gelangt man zur Auswahl allgemeiner Optionen. Last you can modify the notify-bar settings by pressing 'N'.

Allgemeine Optionen

Diese Optionen steuert das allgemeine Verhalten von calcurse wie im folgenden beschrieben wird:

Textfarben einstellen

Die verwendeten Textfarben können nach eigenen Vorlieben eingestellt werden. Durch Betätigung der entsprechenden Taste kann die gewünschte Farbkombination ausgewählt werden. Die gewählte Farbkombination werden dem Rahmen, dem Titel und der Status-Zeilen zugeordnet. Eine schwarz/weiss Kombination ist ebenfalls verfügbar, um Terminals ohne Farben zu unterstützen.
Beachte:

Layout einstellen

Das Layout bezieht sich auf die Positionen der einzelnen Panel. Das Standard-Layout zeigt das Kalender-Panel in der oberen linken Ecke des Terminals, das todo-Panel befindet sich in der unteren rechten Ecke und das Termin-Panel auf der linken Seite des Terminals (siehe die Zeichnung im Abschnitt Interaktiver Modus, die das Beispiel des Standard-Layouts zeigt).
Durch Auswahl eines anderen Layouts kann der Benutzer das Erscheinungsbild von calcurse nach seinen Wünschen anpassen.

Notify-bar settings

The following options are used to modify the notify-bar behavior:

Bekannte Fehler

Es kommt vor, dass Wörter bei Verwendung der schwarz/weiss Farbkombination falsch hervorgehoben werden, wenn die $TERM Variable auf xterm-color gesetzt ist. Um diesen Fehler zu umgehen, sollte nach Aussage von Thomas E. Dickey (zuständig für das xterm), xterm-xfree86 an Stelle für xterm-color als $TERM Variable gesetzt werden:

"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)."

Mitteilung von Fehlern und Anregungen

Bitte mailt Fehler oder auch Anregungen an:

        calcurse@culot.org
oder an den Autor:
        frederic@culot.org

Wie kann ich einen Beitrag leisten?

Wenn Sie gerne dieses Projekt unterstützen möchten, können Sie mir zuerst eine kurze Rückmeldung geben. Was finden Sie gut an diesem Programm oder was könnte besser sein. Gibt es vielleicht Programmeigenschaften, die Sie vermissen? Teilen Sie es mir mit!
Von nun an ist es auch möglich sich an der Übersetzung der Prgrammmitteilungen und der Dokumentation von calcurse zu beteiligen.

Beachte: Jegliche Unterstützung calcurse in andere Sprachen zu übersetzen ist sehr willkommen. Doch bevor Sie beginnen, sollten Sie eine Mail an calcurse-i18n@culot.org senden, um zu erfahren, ob jemand die Übersetzung in Ihrer Sprache schon begonnen hat.

Übersetzung der Dokumentation

Das doc/ Verzeichnis des Source-Packets enthält bereits übesetzte Versionen der calcurse Anleitung. Wenn eine Übersetzung in Ihrer Sprache noch nicht vorhanden ist, wäre es grossartig, wenn Sie eine solche erstellen könnten.
Kopieren Sie dazu eine der vorhandenen Version mit dem Dateinamen manual_XX.html, wobei XX das entsprechende Kürzel Ihrer Sprache ist. Anschliessend übersetzen Sie diese Datei und senden Sie dann an den Author (siehe Mitteilung von Fehlern und Anregungen), so dass Ihre Übersetzung für die nächste Ausgabe von calcurse ins Packet integriert werden kann.

calcurse i18n

Wie bereits erwähnt, verwendet calcurse die gettext Utilities um mehrsprachige Programmmitteilungen zu erzeugen. Dieser Abschnitt informiert darüber, wie Programmmitteilungen in Ihrer Muttersprache übersetzt werden. Dieses howto zur Übersetzung von calcurse mit gettext ist natürlich nur ein Einstieg und wohl zu kurz. Um umfassendere Informationen zu erhalten und sich die weite Welt der Sprachübersetzung für Software zu erschliessen, sollten Sie die Seite der GNU gettext Anleitung besuchen:

                http://www.gnu.org/software/gettext/manual/
        
Eigentlich sind drei verschiedene Entwickler an der Übersetzung beteiligt: Programmierer, Sprachkoordinator und Übersetzer. Nach einem kurzen Überblick, wie so etwas funktioniert, werden anschliessend die Aufgaben des Übersetzers beschrieben.

Überblick

Um Text in der Muttersprache des Benutzers erscheinen zu lassen, sind zwei Schritte nötig: Internationalisierung (i18n) und Lokalisierung (l10n). Bei der i18n geht es darum ein Buch für mehrere Sprachen vorzubereiten. Das wird vom Programmierer durchgeführt, der die zu übersetzenden Texte markiert und es somit ermöglicht, dass zur Laufzeit des Programms der Text übersetzt erscheint. Bei der l10n geht es darum, dem i18n markierten Pragramm calcurse die entsprechende Übersetzung des Benutzers zukommen zu lassen. Die zuvor vom Programmierer markierten Texte werden durch das richtige Setzen der Umgebung für calcurse übersetzt.

Also, die zu übersetzenden Texte werden zunächst vom Programmierer in der C Source-Datei markiert und in einer Template Datei (calcurse.pot - die pot Dateierweiterung bedeutet portable object template) gesammelt. Der Inhalt dieser Template Datei wird dann mit den Dateien, die die Übersetzungen enthalten (fr.po für französisch, hier steht po für portable object, dieses Format kann man lesen und verändern), zusammengeführt. Ein Übersetzer kann diese Datei dazu öffnen, die enthaltenen Texte übersetzen und sie dann an den Programmierer zurück senden. Wenn das Programm kompiliert wird, erzeugt der Kompiler (aus Gründen der Effizienz) eine binäre Version dieser Datei (fr.mo - mo steht für machine object, dieses Format kann nur von Programmen gelesen werden), die dann installiert wird. calcurse nutzt diese Datei zur Laufzeit, um die Texte in Abhängigkeit zur lokalen Einstellung des Benutzers zu übersetzen.

Aufgaben des Übersetzers

Wenn Sie mit der Übersetzung in eine neue Sprache beginnen möchte sind hier die Schritte dazu:

po-Dateien

Das Format der po-Dateien ist relativ einfach. po-Dateien bestehen aus fünf Teilen:

  1. location Zeilen: geben an, wo sich der Text befindet (Name der Datei und Zeilennummer).
  2. msgid Zeilen: der zu übersetzende Text.
  3. msgstr Zeilen: der übersetzte Text.
  4. Zeilen, die mit '#' beginnen: Kommentare (einige mit spezieller Bedeutung, wie wir weiter unten noch sehen werden).
Übersetzen Sie die msgid Zeilen und tragen Sie den übersetzten Text in die mit msgstr gekennzeichneten Zeilen ein.

Einige Anmerkungen:

Links

Dieser Abschnitt enthält Links und Angaben, die Sie interessieren könnten.

calcurse Internetseite

Die Internetseite des Projekts calcurse lautet:

        http://culot.org/calcurse

calcurse Ankündigungsliste

Wenn Interesse an Calcurse besteht und Sie gerne über Neuerscheinungen informiert werden möchten, können Sie gerne auf eine Liste gesetzt werden, die Sie per Mail über die neusten Eigenschaften von calcurse informiert, sobald ein neuer Release erscheint.
Um sich in die Liste eintragen zu lassen, senden Sie eine Mail an calcurse-announce@culot.org mit "subscribe" im Betreff.

Danksagungen

Folgenden Leuten möchte ich gerne für Ihre Unterstützung danken, ohne die dieses Projekt nicht möglich gewesen wäre. Hier ist die Liste derjenigen, denen ich Danke sagen möchte:

Und zuletzt, vielen vielen Dank an alle calcurse Benutzer, die mir Ihr Feedback mitgeteilt haben.
Copyright (c) 2004-2006 Frédéric Culot
German translation by Michael Schulz <bloodshower.at.web.dot.de>
Calcurse version 1.6 - Last change: September 19, 2006