Output mal anders - mit growl!

Diesen Beitrag schrieb ich 12 Jahre und 7 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

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,…

Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: 615x 627px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „Output mal anders - mit growl!“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.