CALCURSE - textbasierter Terminkalender


Inhaltsverzeichnis


Einleitung

calcurse ist ein textbasierter 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 ordnen. Die Terminalfarben und das Layout des Benutzer-Interfaces 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: Im interaktiven und im nicht-interaktiven Modus. Der erste Modus erzeugt Dank des textbasierten 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 jederzeit 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, die jedoch auf den meisten Unix-Systemen verfügbar sein sollte. Falls nicht, können Sie sie 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. Rufen Sie hierzu einfach das configure Skript mit der Option --disable-nls auf (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
        
Wurde diese Datei nicht gefunden, 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.7.tar.gz
Ist diese Voraussetzung erfüllt und das Archiv entpackt, sind nur noch die drei üblichen Schritte erforderlich:
  1. ./configure
  2. make
  3. make install (mit Root-Rechten)
Rufen Sie ./configure --help auf, um die verfügbaren Optionen aufgelistet zu bekommen.

calcurse Grundlagen

Programmaufruf

Programmargumente

Calcurse kann mit den folgenden Optionen aufgerufen werden. Es werden sowohl kurze als auch lange Optionsangaben unterstützt.

-a, --appointment
Gibt die Termine des heutigen Tags aus.
Beachte: Die Kalender-Datei, aus der die Termine gelesen werden sollen, kann mit mit Hilfe der '-c' Option angegeben werden.

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

-d <date|num>, --day <date|num>
Gibt die Termine eines angegebenen Datums oder alle Termine der anzugebenden nachfolgenden Tage aus. Somit sind zwei Formate möglich:
  • Datum: 'MM/TT/JJJJ' (Monat, Tag, Jahr).
  • Anzahl der Tage: 'n'.
Im ersten Fall wird eine Liste mit allen Terminen des angegebenen 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 des heutigen und der beiden folgenden Tage aus.

-h, --help
Gibt eine Hilfe zu den unterstützten Optionen aus.

-n, --next
Gibt den Termin aus, der innerhalb der kommenden 24 Stunden als nächstes stattfindet.
Die dargestellte Zeitangabe weist darauf hin, in wie viel Stunden und Minuten der Termin beginnen wird.
Beachte: Die Kalender-Datei, aus der die Termine gelesen werden sollen, kann mit mit Hilfe der '-c' Option angegeben werden.

-t[num], --todo[=num]
Gibt die 'todo' Liste aus.
Wird die optionale Angabe num übergeben, werden nur diejenigen Aufgaben angezeigt, denen die Prioriät num zugewiesen wurde.
Beachte: Die angegebene Priorität muss zwischen 1 (höchste) und 9 (niedrigste) liegen.

-v, --version
Gibt die aktuelle Version von Calcurse aus.

Umgebungsvariable für i18n

calcurse kann mit Unterstützung für verschiedene Sprachen kompiliert werden (siehe gettext Bibliothek). Um Meldungen in anderen Sprachen zu erhalten, sollte zunächst geprüft werden, ob die po/LINGUAS Datei verfügbar ist. Diese Datei zeigt alle verfügbaren Sprachen durch zweibuchstabige Kürzel an (beispielsweise steht fr für Französisch). Ist Ihre Muttersprache nicht aufgeführt, wäre es natürlich großartig, wenn Sie sich an der Übersetzung von calcurse in andere Sprachen beteiligen könnten (siehe Abschnitt Wie kann ich einen Beitrag leisten?).
Wird Ihre Sprache bereits unterstützt, können Sie calcurse mit dem folgenden Aufruf starten:

                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.
Zusätzlich sollten Sie den verwendeten Zeichensatz angeben, da in einigen Fällen Sonderzeichen wie etwa Akzente und Umlaute nicht korrekt dargestellt werden. Auf den der entsprechende Sprache gewünschten Zeichensatz wird am Anfang der po-Datei hingewiesen. Der Datei fr.po können Sie beispielsweise entnehmen, dass der Zeichensatz iso-8859-1 verwendet wird. Sie könnten calcurse folgendermaßen aufrufen:
		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. Durch das Einbinden von calcurse -ta in eine init config Datei ist es beispielsweise möglich, sich seine zu erledigenden Aufgaben und alle Termine des heutigen Tages beim Logon anzeigen zu lassen.

Interaktiver Modus

Wird keine, oder nur Option -c angegeben, startet calcurse im interaktiven Modus. In diesem Modus erhält man ein Interface mit drei unterschiedlichen Panels, einer Benachrichtigungszeile, sowie einer Status-Zeile (siehe unten). Die einzelnen Panels lassen sich durch die 'TAB'-Taste ansteuern.


      Termin-Panel---.                                   .---Kalender-Panel
                     |                                   |
                     v                                   v
 +------------------------------------++----------------------------+
 |          Termine                   ||          Kalender          |
 |------------------------------------||----------------------------|
 |                      6. April 2006 ||         April 2006         |
 |                                    || Mo  Di  Mi  Do  Fr  Sa  So |
 |                                    ||                      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 |
 |                                    ||                            |
 |                                    |+----------------------------+
 |                                    |+----------------------------+
 |                                    ||          Aufgaben          | todo-
 |                                    ||----------------------------| Panel
 |                                    ||                            |   |
 |                                    ||                            |   |
 |                                    ||                            |<--.
 |                                    ||                            |
 +------------------------------------++----------------------------+
 |---[ So 2006-10-22 | 10:11:43 ]---(apts)----> 01:20 :: lunch  <---|<--.
 +------------------------------------------------------------------+ Benachrichtigungszeile
 | ? Hilfe     S Speichern H/L -/+1 Tag    Tab ändere Ansicht       |
 | Q Beenden   G Gehe zu   J/K -/+1 Woche   C Einstellung           |<-.
 +------------------------------------------------------------------+  |
                                                                       |
                                                                 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.
Direkt über der Statuszeile befindet sich die Benachrichtigungszeile, die von links nach rechts gesehen die folgenden Elemente anzeigt: Das aktuelle Datum, die aktuelle Uhrzeit, die momentan verwendete Kalenderdatei (im obigen Beispiel die standardmäßig verwendete Kalenderdatei apts [Vergleiche hierzu den folgenden Abschnitt]) und der nächste Termin, der in den kommenden 24 Stunden ansteht. Im Beispiel ist dies der Termin lunch, der in 1 Stunde und zwanzig Minuten beginnt.

Beachte: Einige Handlungen, wie beispielsweise das Verändern oder Hinzufügen eines Termins, benötigen Texteingaben, die mithilfe des eingebauten Eingabeeditors eingegeben werden.
Geht eine Zeile über die Bildschirmzeile hinaus, wird dies innerhalb des Editors durch die Zeichen '>', '*', und '<' dargestellt. Dadurch wird in der letzten Spalten darauf hingewiesen, dass sich vor, vor und hinter, beziehungsweise nur hinter der momentanten Position weiterer Text befindet. Gegebenenfalls wird Zeile horizontal gescrollt.
Darüberhinaus sind einigen Editierfunktionen spezielle Tastenkürzel zugewiesen, die in der folgenden Übersicht zusammengefasst sind. Hierbei steht '^' für die Taste 'Strg' beziehungsweise 'Ctrl':

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

Sämtliche in calcurse veränderbaren Parameter lassen sich Konfigurationsmenü einstellen. Drücken Sie hierzu die Taste 'C'. Daraufhin erscheint ein Untermenü mit vier weiteren Wahlmöglichkeiten: Das erneute Betätigen von 'C' führt Sie zu den Farbeinstellungen und über 'L' gelangen Sie in ein Untermenü, in dem Sie die Anordnung der drei Panel ändern können. Drücken Sie 'G' um ins Auswahlmenü der allgemeinen Optionen zu gelangen. Zu guter Letzt können Sie die Einstellungen der Benachrichtigungszeile ändern, indem Sie die Taste 'N' betätigen.

Allgemeine Optionen

Die im Folgenden beschriebenen Optionen steuern calcurses allgemeines Verhalten.

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-Zeile zugewiesen. Eine schwarz/weiß 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 (vgl. die im Abschnitt Interaktiver Modus dargestellte Zeichnung des Standard-Layouts).
Durch Auswahl eines anderen Layouts kann der Benutzer das Erscheinungsbild von calcurse seinen eigenen Wünschen entsprechend anpassen.

Benachrichtigungszeile einstellen

Folgende Optionen ändern das Verhalten der Benachrichtigungszeile:

Bekannte Fehler

Es kommt vor, dass Wörter bei Verwendung der schwarz/weißen Farbkombination falsch hervorgehoben werden, wenn die $TERM Variable auf xterm-color gesetzt ist. Um diesen Fehler zu vermeiden, sollte nach Aussage von Thomas E. Dickey (zuständig für 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 mailen Sie 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 an diesem Programm gut oder was könnte besser sein? Gibt es vielleicht Programmeigenschaften, die Sie vermissen? Teilen Sie sie mir mit!
Von nun an ist es auch möglich, sich an der Übersetzung der Programmmitteilungen und der Dokumentation von calcurse zu beteiligen.

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

Übersetzung der Dokumentation

Das doc/ Verzeichnis des Quellcodearchivs enthält bereits übersetzte Versionen des calcurse Handbuchs. Ist eine Übersetzung in Ihrer Sprache noch nicht vorhanden, wäre es großartig, 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. Übersetzen Sie diese Datei anschließend und senden Sie sie dann an den Autor (siehe Mitteilung von Fehlern und Anregungen), damit Ihre Übersetzung der nächsten calcurse Version hinzugefügt werden kann.

calcurse i18n

Wie bereits erwähnt, verwendet calcurse die gettext Utilities um mehrsprachige Programmmitteilungen zu erzeugen. Dieser Abschnitt informiert Sie darüber, wie Programmmitteilungen in Ihre Muttersprache übersetzt werden. Dieses Howto zur Übersetzung von calcurse mittels gettext ist natürlich nur als Einstieg gedacht und mit Absicht recht knapp gehalten. Um umfassendere Informationen zu erhalten und sich die große weite Welt der Internationalisierung von Software zu erschließen, sollten Sie die Seite der GNU gettext-Anleitung besuchen:

                http://www.gnu.org/software/gettext/manual/
        
An der Übersetzung sind im Grunde drei verschiedene Entwickler beteiligt: Programmierer, Sprachkoordinator und Übersetzer. Nach einem kurzen Überblick, wie so etwas funktioniert, werden anschließend 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, calcurse auf die Unterstützung mehrerer Sprachen vorzubereiten. Dies ist die Aufgabe des Programmierers, der die zu übersetzenden Texte markiert und andererseits sicherstellen muss, dass zur Laufzeit des Programms der übersetzt Text erscheint. Bei der l10n geht es darum, dem bereits internationalisierten - also i18n markierten - calcurse die entsprechende Übersetzung des Benutzers zur Verfügung zu stellen. Gemäß den Umgebungsvariablen ersetzt calcurse die zuvor vom Programmierer markierten Texte durch die entsprechenden Übersetzungen.

Die zu übersetzenden Texte werden also zunächst vom Programmierer im C-Quellcode markiert und in einem Template (calcurse.pot - die Dateierweiterung pot steht für portable object template) gesammelt. Anschließend wird der Inhalt dieses Templates mit den Dateien, die die Übersetzungen enthalten zusammengeführt (fr.po enthält beispielsweise die Französische Übersetzung (po steht hierbei für portable object, also ein von Menschen les- und veränderbares Dateiformat), Der Übersetzer kann diese Datei öffnen, die enthaltenen Texte übersetzen und sie dann an den Programmierer zurück senden. Wird das Programm compiliert, erzeugt der Compiler (aus Gründen der Effizienz) eine binäre Version dieser Datei, die später installiert wird (fr.mo - mo steht für machine object; dieses Format kann nur von Programmen gelesen werden). calcurse nutzt diese Datei zur Laufzeit, um die Texte in Abhängigkeit der lokalen Einstellungen des Benutzers zu übersetzen.

Aufgaben des Übersetzers

Wenn Sie mit der Übersetzung in eine neue Sprache beginnen möchten, finden Sie hierzu die nötigen Schritte:

po-Dateien

Das Format der po-Dateien ist relativ einfach. po-Dateien gliedern sich in lediglich vier Bestandteile:

  1. location Zeilen: geben an, wo sich der Text befindet (Name der Datei und Zeilennummer).
  2. msgid Zeilen: der ursprüngliche, also 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 sich direkt darunterbefindlichen, 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 Sie an calcurse Interesse gefunden haben und Sie gerne über Neuerscheinungen informiert werden möchten, können Sie sich gerne in calcurses Ankündigungsliste eintragen. Sobald eine neue Version veröffentlicht wird, werden Sie per E-Mail über die neusten Eigenschaften von calcurse informiert
Um sich in die Liste einzutragen, schicken Sie einfach eine E-Mail mit dem Betreff "subscribe" an calcurse-announce@culot.org.

calcurse RSS feed

Um über neue Programmversionen informiert zu werden, können Sie auch einfach den folgenden RSS-Feed aufrufen:

	http://culot.org/calcurse/news_rss.xml
	
Sobald eine neue calcurse-Version verfügbar ist wird der RSS-Feed aktualisiert und enthält eine Beschreibung der neu hinzugekommenen Programmfunktionen.

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-2007 Frédéric Culot
German translation by Michael Schulz <bloodshower.at.web.dot.de>, and Chris.
Calcurse version 1.7 - Last change: January 9, 2007