Calcurse und Khal sorgen auch im Terminal dafür, dass Sie keine Termine und Events verpassen. Über das Netz synchronisieren Sie die Daten zwischen verschiedenen Installationen und Diensten.
Sofern Sie nicht über ein extrem gutes Gedächtnis verfügen und zudem ein Organisationstalent sind, brauchen Sie einen Kalender, um Ihren Alltag zu organisieren. Termine und Projekte, Geburtstage und Aufgaben wollen verwaltet werden. Wer dann zudem noch textorientiert arbeitet, der könnte an unserem heutigen Thema Gefallen finden: Es geht um Kalender, die auf der Kommandozeile zu Hause sind und ein TUI bieten.
TUI steht für Text-based User Interface und lässt sich als zeichenorientierte Benutzerschnittstelle übersetzen. Zumindest überschreibt Wikipedia [1] so seinen Artikel zu dieser Arbeitsweise im Terminal. Im Unterschied zum zeilenweisen Arbeiten auf der Kommandozeile (Command Line Interface, CLI) arbeitet man in der TUI mit textbasierten Schaltflächen und Dialogen. Somit positioniert sich das TUI-Konzept als Mittelding zwischen CLI und GUI.
Es gibt deutlich mehr Kalender, die in diesem Modus arbeiten, als dem Autor bisher bewusst war. Wir haben für diesen Artikel die TUI-Kalender Calcurse [2] und Khal [3] ausgewählt. Ein Ableger von Calcurse ist das seit Herbst 2021 entwickelte, in Python geschriebene Calcure [4]. Es will mit der Zeit den veritablen Funktionsumfang des Oldies Calcurse nachbilden, bei der Optik aber einen moderneren Look anstreben. Derzeit beschränkt sich die Funktionalität aber noch auf Grundfunktionen.
Die Entwicklung von Calcurse hingegen begann bereits 2004. Das Programm ist ebenso wie das 2015 gestartete Khal in vielen Distributionen in aktuellen Versionen vertreten. Während sich also die beiden Veteranen schnell über die Distribution Ihrer Wahl aus den Paketarchiven installieren lassen, müssen Sie beim Newcomer Calcure etwas Hand anlegen. Da Calcure in Python geschrieben ist, lässt es sich zumindest schnell mit Pip einspielen, dem Paket-Installer von Python (Listing 1).
Listing 1
Calcure installieren
### Calcure über Pip installieren: $ pip install holidays jdatetime $ pip install calcure ### Pip installieren unter ... ### ... Debian, Ubuntu und Co. $ sudo apt install python3-pip ### ... Fedora $ sudo dnf install python3-pip ### OpenSuse $ zypper install python3-pip
Um Ihren Favoriten aus dem Trio zu küren, ist es sinnvoll, alle drei Kontrahenten zu installieren, um sie dann in drei Terminalfenstern nebeneinander vergleichen zu können. Wichtige Gesichtspunkte sind neben der Funktionalität der visuelle Auftritt, der über die Übersichtlichkeit entscheidet, sowie die Einfachheit der Bedienung.
Von einem TUI-Kalender sollten Sie in den Grundfunktionen nicht weniger erwarten als von den grafischen Pendants. Dazu gehören eine gute Übersicht über Tag, Woche und Monat, das Speichern und Verfolgen von Aufgaben sowie die Synchronisation mit anderen Kalendern. Für viele Nutzer dürfte auch die Unterstützung von iCal [5] als universelles Standarddatenformat wichtig sein. Sehen wir also nach, wie sich Khal, Calcurse und Calcure dabei schlagen.
Khal
Falls Sie Khal nicht mit anderen Kalendern synchronisieren möchten, genügt es, das Paket khal einzuspielen. Ansonsten sollten Sie das Paket vdirsyncer [6] mit installieren, da Khal keine integrierte Synchronisation bietet. Vdirsyncer übernimmt die Synchronisation der Kalender und Adressbücher zwischen einer App wie Khal, die das Vdir-Format [7] unterstützt, und beispielsweise einem Nextcloud-Kalender oder bei Bedarf auch dem Google Calendar.
Danach kopieren Sie die Beispiel-Konfigurationsdatei /usr/share/doc/vdirsyncer/examples/config als ~/.config/vdirsyncer/config in Ihr Home-Verzeichnis und bearbeiten sie dort. Dabei hilft die ausführliche Dokumentation [8]. Erst dann rufen Sie Khal zum ersten Mal per khal configure auf und legen interaktiv Ihre Präferenzen fest. Dabei binden Sie auch die Konfiguration von Vdirsyncer ein (Abbildung 1).

Abbildung 1: Der Befehl khal configure fragt Präferenzen wie Zeitzone und -format ab und bindet zur Synchronisation Vdirsyncer ein, falls es dessen Konfigurationsdatei vorfindet.
Um für die benötigten Kalender und Kontaktlisten Einzelheiten wie die farbliche Darstellung festzulegen, müssen Sie die Konfiguration unter ~/.config/khal/config noch einmal bearbeiten (Abbildung 2). Auch hier steht Ihnen wieder eine Dokumentation zur Seite [9]. Achten Sie abschließend darauf, dass die Angaben in den beiden Konfigurationsdateien übereinstimmen. Falls Sie sich mit einem Klartextpasswort in der Konfiguration nicht wohlfühlen, finden Sie in der Manpage mehrere Möglichkeiten, mittels password.fetch das Passwort und bei Bedarf auch den Benutzernamen aus anderen Quellen zu beziehen [10].

Abbildung 2: In der Konfiguration von Khal legen Sie neben den Kalendern selbst auch die Farben fest, mit denen diese zur besseren Unterscheidung angezeigt werden sollen.
Khal unterstützt einen Modus, der über Kommandos wie list, new oder interactive funktioniert. Der zuletzt genannte Befehl öffnet eine interaktive Kalenderansicht, die Sie auch über das Kommando ikhal erreichen. Die zweigeteilte Ansicht zeigt links eine fortlaufende Kalenderansicht und rechts dieselbe Ansicht mit den Namen der Wochentage. Sie bewegen sich darin wie im Editor Vi mit den vier Tasten [J]+[K]+[H] und [I], wobei Sie in der linken Ansicht auch die Maus nutzen können. Zwischen den Ansichten wechseln Sie mithilfe der Pfeiltasten für rechts und links. Falls Sie die Vi-Tasten nicht gewohnt sind, bedienen Sie die gesamte Navigation auch mit den vier Richtungstasten.
Termine legen Sie am einfachsten im interaktiven Modus an, indem Sie ikhal aufrufen, zum entsprechenden Tag navigieren und dann [N] drücken. Nun tragen Sie in die Felder der Eingabemaske die gewünschten Informationen ein und speichern den Eintrag (Abbildung 3). Hilfe zum interaktiven Modus erhalten Sie durch Eingabe eines Fragezeichens via [Umschalt]+[ß]. Alternativ vermerken Sie neue Termine auch ohne den interaktiven Modus. Um für den nächsten Tag ein Meeting anzulegen, nutzen Sie etwa den Befehl khal new tomorrow 10:00:*12:00 -a work "LUG :: Treffen AG Linux".
![Abbildung 3: Der interaktive Modus von Khal erlaubt über die Taste [N] das Anlegen neuer Termine. Er bietet neben der Auswahl des Kalenders Eingabefelder für Titel, Ort, Kategorie, Beschreibung, Zeitpunkt und Dauer sowie eine Benachrichtigung.](/wp-content/uploads/2022/10/b03_khal-interactive-300x141.jpg)
Abbildung 3: Der interaktive Modus von Khal erlaubt über die Taste [N] das Anlegen neuer Termine. Er bietet neben der Auswahl des Kalenders Eingabefelder für Titel, Ort, Kategorie, Beschreibung, Zeitpunkt und Dauer sowie eine Benachrichtigung.
Alle eingetragenen Termine sehen Sie mit khal list ein. Sollen die Termine der nächsten sieben Tage aus dem Kalender Arbeit angezeigt werden, so erreichen Sie das mit dem Kommando khal list -a Arbeit today 7d. Sämtliche Optionen, Tastenkürzel und einige Beispiele finden sich in der Manpage [11]. Das Aufsetzen von Khal zusammen mit Vdirsyncer für die Synchronisation mit anderen Kalendern ist ein wenig knifflig, aber haben Sie es erledigt, steht Ihnen ein zuverlässiges System zur Verfügung, das ohne weitere Eingriffe läuft. (Abbildung 4)

Abbildung 4: Ist Khal fertig aufgesetzt, bietet es einen guten Überblick über Termine aus verschiedenen Kalendern. Lediglich die Synchronisation mit Vdirsyncer erfordert etwas Hirnschmalz.
Calcurse
Bei dem in C geschriebenen Calcurse [12] handelt es sich um einen weiteren Kalender für die Kommandozeile, den es bereits seit 2004 gibt. Der Name ist ein Kofferwort aus Calendar und Ncurses, was bereits auf dasselbe Prinzip wie auch bei Khal hinweist. Wie Khal verfügt Calcurse über einen interaktiven Modus, lässt sich aber auch ohne ihn in Skripten einsetzen.






