Output mal anders - mit growl!
Seit über 10 Jahren folgen meine Skripte einem ähnlichen Schema: sie tun Dinge und melden Ergebnisse, ersteres auf verschiedene Weise, letzteres entweder per syslog oder per Mail. Es funktioniert halt ;-) Allerdings nervt der Overhead, den die Mails erzeugen, doch des öfteren.
Das Müllmanagement im Jahre 2012 ist relativ kompliziert: zu verschiedenen Zeiten müssen Mülltonne, Biotonne, gelber Sack und blaue Tonne rausgestellt werden. Vergesse ich das, habe ich ein Problem – überlaufende Mülltonne, sich stapelnde gelbe Säcke und so weiter. Eine (langweilige) Art ist es, sich Termine mit entsprechenden Remindern in den Kalender zu setzen; ich jedoch habe mir vor Urzeiten ein Shell-Skript gebaut, das auf dem Server ausgeführt wurde und mir Mails schickte. Dieses Skript, so dachte ich, könnte man ja auch nach AppleScript portieren und sich – auf dem heimischen Rechner – Dialogboxen bauen lassen.
Wie sich jedoch schnell zeigte bedarf es vieler Zeilen Code, um in AppleScript die aktuelle Kalenderwoche zu ermitteln; und dass ein per Cron aufgerufenes AppleScript Dialogboxen macht ist auch mehr so PITA. Doch dann fiel mir ein Stück Software ein, das schon seit Jahren auf meinem iMac dümpelt, das sich jedoch prima für eigene Zwecke missbrauchen lässt: Growl. Also mal fix growlnotify
runtergeladen und ausprobiert: hah!
#!/bin/bash
# Dieses Script jeden Montag und Donnerstag ausfuehren
# Dabei pruefen: ist Woche gerade oder ungerade?
# Wenn gerade: Di Muelltonne, Fr gelbe Saecke
# Wenn ungerade: Di Biotonne
PROG=`basename $0`
MAILTO="empfaenger1@localwurst.de empfaenger2@localwurst.de"
FROM="system@localwurst.de"
WEEK=`date +%W`
WERT=`expr $WEEK % 2`
TODAY=`date +%u`
## Wochentag 1-7, wobei 1=Montag
######
if [ "$WERT" -eq 0 ] ; then
TITLE="Gerade Kalenderwoche (KW $WEEK)"
if [ "$TODAY" -eq 1 ] ; then
## Montags: Reminder fuer Muelltonne
SUBJECT="MORGEN Abfuhr Mülltonne - JETZT rausstellen!"
elif [ "$TODAY" -eq 4 ] ; then
## Donnerstags: Reminder fuer gelbe Saecke
SUBJECT="MORGEN Abfuhr gelber Säcke - JETZT rausstellen!"
else
## Beliebiger anderer Wochentag
SUBJECT="In dieser Woche sind Mülltonne und gelbe Säcke fällig - aber nicht heute!"
fi
else
TITLE="Ungerade Kalenderwoche (KW $WEEK)"
if [ "$TODAY" -eq 1 ] ; then
## Dann ist Montag: Reminder für Biotonne schicken
SUBJECT="MORGEN Abfuhr der Biotonne - JETZT rausstellen!"
else
## Beliebiger anderer Wochentag
SUBJECT="In dieser Woche ist die Biotonne fällig - aber nicht heute!"
fi
fi
######
/usr/local/bin/growlnotify \
--name "$PROG" \
--title "$TITLE" \
--message "$SUBJECT" \
--sticky -p 2
## echo ":)" | mailx -s "$TITLE $SUBJECT" $MAILTO -r $FROM
Das Skript wird in der Crontab von nun an jeden Montag und jeden Donnerstag ausgeführt und zaubert den Output per Growl in meine rechte untere Bildschirmecke; die Message bleibt so lange dort stehen, bis ich sie anklicke – und ich klicke sie erst an, wenn der Kram draußen steht. Was meist relativ umgehend geschieht, da mich die Message in der Ecke nervt ;-) Damit die Nachricht dauerhaft stehen bleibt, ist aber eines unerlässlich: als „Display Style“ dürfen weder „Bezel“ noch „Music Video“ ausgewählt werden – bei den beiden verschwinden die Boxen nach der in Displays angegebenen Duration, default fünf Sekunden. Wenn man das nicht weiß, debuggt man sich an dieser Stelle den Wolf.
Lustig in diesem Zusammenhang auch OmniGrowl, mit dem man so ziemlich alles machen kann – iTunes, iCal,…
Hintergrundbild: 615x 627px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten