Termine aus Calcurse in conky anzeigen

In diesem Tutorium wird erklärt, wie man Termine von heute und morgen mittels Conky auf dem Desktop anzeigen lassen kann.
Das machen wir mittels der Ausgabe von Calcurse, die per bash script platzsparender gemacht wird. Jeder Termin wird dann eine Zeile belegen.

Programme

Die Versionen der hier benutzten Software:

  • Conky Version 1.8.1 (link)
  • Calcurse Version 2.8 (link)
  • Bash 4.1.10(2)

Das Script

Im Script werden die Daten aus Calcurse in einer Datei gespeichert. Anschliessend wird die umformatiert in eine Datei geschrieben. Diese Datei liest Conky dann aus. Ich habe das Script hier einfach conky_cal genannt. Es sollte natürlich ausführbar sein.
Die Variable DATEFMT muss das Format enthalten, dass auch in Calcurse als „input_datefmt“ (General options -> Punkt [9]) definiert ist.
Ausserdem gibt es noch einen „Beamer mode“. Hier wird einfach nur der Satz „—– This information is not for your eyes —–“ ausgegeben. Man möchte ja unter Umständen nicht in der Besprechung beim Kunden seine ganzen Termine per Beamer an die Wand schmeissen 😉 .

conky_cal

#!/bin/bash
# Script to write appointments from today or tomorrow to stdout
# -m    Appointments for Tomorrow
# -bon  "Beamer mode" on;
#   Shows only "----- This information is not for your eyes -----"
# -boff "Beamer mode" off

BFILE=/tmp/conky_cal.beamer
DATEFMT="%Y-%m-%d" # Be sure to set the same date format as in calcurse here

# Turn on "beamer mode"
BOn(){
    echo "1" > $BFILE
    exit 0
}

# Turn off "beamer mode"
BOff(){
    rm -f $BFILE
    exit 0
}

DateToday(){
    DATUM=$(date +"${DATEFMT}")
    APPS=/tmp/apt
    APPTMP=/tmp/apt_tmp
}

DateTomorrow(){
    DATUM=$(date -d "+1 day" +"${DATEFMT}")
    APPS=/tmp/apt_m
    APPTMP=/tmp/apt_tmp_m
}

WriteFile(){
    calcurse -d $DATUM > $APPTMP

    sed -n -e '/ - /b time
        /^$/d;1d;s/^ \* /-/p
        t
        :time
        /^$/d;1d;s/^ - //;$!N;s/\n/ /p
        ' $APPTMP > $APPS
}

ReadFile(){
    while read I
    do
        echo $I
    done < $APPS
}

# Check "beamer mode"
if [ "$1" == "-boff" ]; then
    BOff
fi

if [ -e $BFILE ]; then
    if [ "`cat $BFILE`" == "1" ];then
        echo "----- This information is not for your eyes -----"
        exit 0
    fi
fi

case "$1" in
    -bon)
        BOn
        ;;
    -boff)
        BOff
        ;;
    -m)
        DateTomorrow
        WriteFile
        ReadFile
        ;;
    *)
        DateToday
        WriteFile
        ReadFile
        ;;
esac
Die Anzeige in Conky

Dazu ruft man in Conky die Datei im gewählten Intervall auf. Ein Eintrag in der Datei ~/.conkyrc kann folgendermassen aussehen:

~/.conkyrc
...
 ${color grey}Termine von heute $hr $color
 ${texeci 60 /pfad/zu/conky_cal}${color grey}Termine von morgen $hr $color
 ${texeci 60 /pfad/zu/conky_cal -m}
 ...

Damit werden die Termine auf dem Bildschirm alle 60 Sekunden aktualisiert. Den Eintrag sollte man natürlich noch auf die persönlichen Gegebenheiten anpassen.

Das war auch schon alles.
Jetzt sollte Conky die Termine Anzeigen.

Ab Version 3.0.0 kann man in Calcurse das Ausgabeformat selber festlegen. Das ist sehr angenehm, da sich mit Änderungen das komplette Bash-Script einsparen läßt.

Das macht man auf folgende Weise. In der Datei ~/.conkyrc ändert man die Zeilen für die Termine zu folgendem:

~/.conkyrc
...
 ${color grey}Termine $hr $color
 ${texeci 60 calcurse -r2 --format-apt='%S-%E %m\n' --format-recur-apt='%S-%E %m\n' --format-event=' - %m\n' --format-recur-event=' - %m\n'}
 ...

Die Parameter und deren Anpassung lassen sich in der man page zu Calcurse nachlesen.

Der „Beamer mode“ ist damit natürlich leider auch raus.

Viel Spass damit.

by MaschinenHans

Ein Gedanke zu „Termine aus Calcurse in conky anzeigen

  1. Ich wollte nur herzlichen Dank für das Skript und die Info zu neuen Version von calcurse. Das Skript hat leider nicht funktioniert – es wurde moniert, daß die Option -d in calcurse ein Argument benötigt. Aber die neueste calcurse-Version braucht das Skript ja nicht mehr, und die Beamer-Funktion ist für mich wegen Desktop-Rechner auch entbehrlich.

    Mein Conky ist nun die perfekte Nachrichtenzentrale geworden mit Mail, Wetter, Terminen und Systeminfos.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Wordpress Anti-Spam durch WP-SpamShield