Zum Jahreswechsel: when – ein extrem einfacher Kalender

  Nick   Lesezeit: 4 Minuten Auf Mastodon ansehen

"Alles sollte so einfach wie möglich sein, aber nicht einfacher". Einen Perl-Kalender mit dem Terminal verwalten

zum jahreswechsel: when – ein extrem einfacher kalender

Vermutlich nicht völlig zu Unrecht werden die meisten von Euch ein anderes der zahlreichen Werkzeuge zur Verwaltung von Terminen, Jahrestagen, Geburtstagen (u.s.w.) verwenden, der Autor dieser Zeilen verwendet jedoch – aus Gründen der Einfachheit – "when".

Auf den ersten Blick mag die Kalenderdatei (s.u.) verschrecken, aber in der Praxis gibt man when e ins Terminal ein, und es geht der Lieblingseditor mit der Kalenderdatei auf, in dem an beliebiger Stelle– einen Einzeiler für einen neuen Termin eintragen kann. Z. B.: "2026 jan 3, 17:30 Uhr Rueckfahrt Gleis 3" (oder dergleichen), aber dazu kommen wir noch.

Wieso und weshalb "when"?

Der Autor (also der des Skripts) liefert eine schlüssige Begründung, die zumindest mich, auch heute noch, überzeugt:

  • It's a very short and simple program, so you can easily tinker with it yourself.
  • You should be able to install it on any system where Perl is available.
  • Its file format is a simple text file, which you can edit in your favorite editor.

Zu tun haben wir es also mit einem Perl-Skript, und – um es gleich vorweg zu nehmen - "Umlaute" scheinen nicht unterstützt zu werden. Sollte sich ein solcher eingeschlichen haben, passiert einfach gar keine Auswertung.

Was immer 'when' zurückgibt, kann geeignet im Terminal dargestellt werden (vgl. Titelbild, die Ausgabe von 'when' in Kombination mit ncal) oder bedarfsweise in Textschnipseln oder Webseiten verwendet werden, wahlweise als Textfile oder umgewandelt in HTML.

In der Openbox-Konfigurationsdatei z. B. ist -tagesaktuell- bei mir die Ausgabe -hier im Beispiel für das Titelbild- über die Tastenkombination Alt-c folgendermaßen definiert:


xterm  -geometry 80x31+270+40 -hold -T "3 Monate - Kalenderwochen und anstehende Termine (ncal, when)"  -fa "DejaVu Sans Mono:pixelsize=14"  -e "ncal -w3 ;  printf '%25s\n' | tr ' ' - ; printf 'Anstehende Termine per:\n' ; when --future=45 --noampm ; " 

Die Installation des Skripts (when) kann in Debian (und vermutlich anderen Distributionen) über den jeweiligen Paketmanager erfolgen.

Bestandteile und Konfiguration

Neben dem Skript benötigen wir – zumindest für die Darstellung von "Geburtstagen"- auch den M4 Makroprozessor.

Anmerkungen zur Konfiguration

Die Konfiguration erfolgt in ~/.when/ und die drei dort hinterlegten Dateien sind:

  • preferences
  • birthdays
  • calendar

Die Konfigurationsdatei 'preferences'

Wir sehen: den Ablageort der Kalenderdatei, welcher Editor über 'when e' gestartet werden soll, wenn es also gilt, Termine hinzuzufügen, die gewählte Ausgabesprache, den "Makroprozessor" (vgl. "Geburtstagsdatei") sowie einige Angaben zur Formatierung.

Die "Geburtstagsdatei"

Im folgenden Bild erschließt sich, was der "Makroprozessor" tut, und natürlich lassen sich hier Geburts-, Todes- und auch alle sonstigen (halt seit dem jeweiligen "Geburtsjahr") jährlich wiederkehrend anstehenden Tage und Jubiläen mit einem kleinen Text versehen.

Mit z. B. "1640" als Jahresangabe scheint when überfordert. Dies ist aber mit einem "Trick" kein Problem, und wir schreiben anstatt "1640 mar 16" einfach *1940 mar 16, D. ist seit 300+\a J.* tot (ein möglicherweise Verwandter war im 30 Jährigen Krieg vom Leben zum Tode befördert worden)*.

Die Geburtstagsdatei

Die "Kalenderdatei"

Hiermit kommen wir zum spannenden Teil. Wie zuvor erwähnt: ohne Umlaute, kann über 'when e' im Editor wahlweise ein Termin hinzugefügt oder bearbeitet werden, und zwar im Format: YYYY mmm DD, Uhrzeit Freitext.

Die Uhrzeit als xx.xx ist optional und mit 'mmm' ist der Monat als kleingeschriebenes englisches Monatskürzel gemeint, also jan, feb, mar (u.s.w.) (vgl. Bild, hier natürlich nur ein Ausschnitt). Wichtig ist das Komma!

Die zeitliche Reihenfolge in der Textdatei ist natürlich komplett egal, denn das erledigt ja das Skript. Einträge, die nicht ausgewertet werden sollen, können als Kommentar mit einer vorangestellten Raute (#) gewissermaßen "deaktiviert" werden.

Die Kalenderdatei

Bestimmte Feinheiten in der "Kalenderdatei"

Es können Termine spezifiziert werden, die dann nach Ablauf nicht mehr angezeigt werden, aber auch feste Einträge definiert werden, die in unterschiedlichen Jahren auf unterschiedliche Tage fallen, der "Ostersonntag" z. B. und alles, was daran verknüpft ist, oder allgemein Termine, die irgendwelchen, festzuhaltenden "Regeln" folgen.

Die "Reihenfolge" der Einträge ist natürlich beliebig, denn entscheidend ist das jeweilige Datum. Ein Termin ist jeweils in einer Zeile definiert. Es gibt eine Manpage, wo man die Dinge nachlesen kann, oder etwa die Seite des Autors (s.u.):


#...
m=nov  & w=thu & a=4 , Thanksgiving (USA), Freitag = BlackFriday
# Erster ADVENT ist stets im Zeitraum 27. Nov - 3. Dez
(m=nov | m=dec) & w=sun & (d>=27 | d  Any of the following contributions would be gratefully accepted:
> > *  Translate When into more languages.
> > *  Test my suggested workaround (upgrading Perl) for the problem with Red Hat 9.0.
> > *  Write external programs to convert to and from iCalendar and vCalendar formats. 

PS: Allen Lesern Frohe Weihnachten (gehabt zu haben) und -womit auch immer Ihr Eure anstehenden Termine fixiert- Auf ein Frohes 2026!

Quellen:
https://www.lightandmatter.com/when/when.html

https://de.wikipedia.org/wiki/M4_(Programmiersprache)

Tags

Kalender, Terminal, Terminverwaltung

Es wurden noch keine Kommentare verfasst, sei der erste!