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:

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 ;-) .

conky_cal (line 1)
  1. #!/bin/bash
  2.  
  3. # Script to write appointments from today or tomorrow to stdout
  4. # -m    Appointments for Tomorrow
  5. # -bon  "Beamer mode" on;
  6. #   Shows only "----- This information is not for your eyes -----"
  7. # -boff "Beamer mode" off
  8.  
  9. BFILE=/tmp/conky_cal.beamer
  10. DATEFMT="%Y-%m-%d" # Be sure to set the same date format as in calcurse here
  11.  
  12. # Turn on "beamer mode"
  13. BOn(){
  14.     echo "1" > $BFILE
  15.     exit 0
  16. }
  17.  
  18. # Turn off "beamer mode"
  19. BOff(){
  20.     rm -f $BFILE
  21.     exit 0
  22. }
  23.  
  24. DateToday(){
  25.     DATUM=$(date +"${DATEFMT}")
  26.     APPS=/tmp/apt
  27.     APPTMP=/tmp/apt_tmp
  28. }
  29.  
  30. DateTomorrow(){
  31.     DATUM=$(date -d "+1 day" +"${DATEFMT}")
  32.     APPS=/tmp/apt_m
  33.     APPTMP=/tmp/apt_tmp_m
  34. }
  35.  
  36. WriteFile(){
  37.     calcurse -d $DATUM > $APPTMP
  38.  
  39.     sed -n -e '/ - /b time
  40.         /^$/d;1d;s/^ \* /-/p
  41.         t
  42.         :time
  43.         /^$/d;1d;s/^ - //;$!N;s/\n/ /p
  44.         ' $APPTMP > $APPS
  45. }
  46.  
  47. ReadFile(){
  48.     while read I
  49.     do
  50.         echo $I
  51.     done < $APPS
  52. }
  53.  
  54. # Check "beamer mode"
  55. if [ "$1" == "-boff" ]; then
  56.     BOff
  57. fi
  58.  
  59. if [ -e $BFILE ]; then
  60.     if [ "`cat $BFILE`" == "1" ];then
  61.         echo "----- This information is not for your eyes -----"
  62.         exit 0
  63.     fi
  64. fi
  65.  
  66. case "$1" in
  67.     -bon)
  68.         BOn
  69.         ;;
  70.     -boff)
  71.         BOff
  72.         ;;
  73.     -m)
  74.         DateTomorrow
  75.         WriteFile
  76.         ReadFile
  77.         ;;
  78.     *)
  79.         DateToday
  80.         WriteFile
  81.         ReadFile
  82.         ;;
  83. 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:

~/.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