Wiki source for CalcurseInConky


Show raw source

@@====Termine aus Calcurse in Conky anzeigen====@@---
In diesem Tutorium wird erklaert, 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 ([[http://conky.sourceforge.net link]] )
~- Calcurse Version 2.8 ([[http://www.calcurse.org 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 natuerlich ausfuehrbar 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 moechte ja unter Umstaenden nicht in der Besprechung beim Kunden seine ganzen Termine per Beamer an die Wand schmeissen ;-) .

%%(bash;1;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 gewaehlten Intervall auf. Ein Eintrag in der Datei ##~/.conkyrc## kann folgendermassen aussehen:

%%(text;~/.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 natuerlich noch auf die persoenlichen Gegebenheiten anpassen.

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

Viel Spass damit.

===Kategorien===
[[CategoryTutorials]]
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki