Growl Notifications für Dashboard Widgets

Growl ist die komfortable Schnittstelle um Anwendern ein Feedback über Programmstatis zu geben. Und diese Funktionalität läßt sich auch einfach für Widgets im Dashboard nutzen

Für die die Growl noch nicht kennen, zum Anfang eine kurze Erklärung. Programme informieren den Benutzer mittels Growl über wichtige Ereignisse. Die Prioritäten dieser kann der Benutzer vollständig konfigurieren. So müssen Softwareentwickler keine eigenen Benachrichtigungssysteme mehr entwerfen, sondern die Meldungen nur noch an Growl weitergeben.
growlGrowl ist eigentlich ein aus Mac OS 9 (und früher) stammendes Feature. Dort wurde der Benutzer ebenfalls systemweit darüber informiert wenn ein Programm die Aufmerksamkeit des Benutzers benötigte.
Mit Growl kompatible Programme senden kurze Signale, wie zum Beispiel „Download beendet“ oder den gerade gespielten iTunes-Song, die dann als Growl-Benachrichtigung im vom Benutzer ausgewählten Stil angezeigt wird.
Es bietet Schnittstellen für Entwickler, die die Programmiersprachen Objective-C, C, Perl, Python, Tcl, Ruby, Java und AppleScript benutzen.

Und letzteres nutzen wir nun um vom Dashboard aus Growl aufrufen zu können. Die Lösung besteht insgesamt aus drei Teilen:

  • ein Shellscript um das Vorhandensein von Growl zu prüfen
  • etwas Javascript um ersteres und den Mitteilungsbefehl auszuführen
  • und das Applescript um die Mitteilung zu erstellen und abzuschicken

Als erstes das Javascript:

widget.system('growlExists.sh', function (obj) {
   var cmd;
   if (+obj.outputString > 0) {
      cmd = '/usr/bin/osascript senToGrowl.scpt ' +
         '"Name" "Widget" "Dashboard" ' +
         '"Titel" "Beschreibung"';
      widget.system(cmd, function (obj) {});
   }
});

Das Script macht einen widget.system Aufruf, in dem es growlExists.sh aufruft. Nach dem das Script geantwortet hat, wird deren Wert in eine anonyme CallBack-Funktion übergegeben.
Das Shellscript ist unheimlich einfach. Es ruft den Kommandozeilen-Befehl osascript auf und startet damit ein einfaches Applescript welches die Systemprozesse zählt, die den Namen “GrowlHelperApp” besitzen. Wenn Growl gestartet ist, gibt das Script “1″ zurück, bzw. wenn nicht eine “0″.

#!/bin/sh
osascript<<END
tell application "System Events"
   return count of (every process whose name is "GrowlHelperApp")
end tell
END

Wenn Growl erkannt wurde, setzt das Javascript den Befehl für die Notification zusammen und führt diesen aus. Der Befehl der von osascript aus geführt wird, enthält folgende Parameter:

senToGrowl.scpt

Der Pfad zum Growl Applescript

"Name"

Der Mitteilungsname

"Widget"

Der Name des Programmes welches die Mitteilung wirft

"Dashboard"

Der Name des Programms von welchem das Icon angezeigt wird

"Titel"

Der Titel der Notification

"Beschreibung"

Der Beschreibungstext in der Growl Mitteilung

osascript führt senToGrowl.scpt aus und fügt die Parameter ein. Das Applescript erstellt dann so die Growl Notification:

on run argv
   tell application "GrowlHelperApp"
      set the allNotificationsList to {item 1 of argv}
      set the enabledNotificationsList to {item 1 of argv}
      register as application ¬
         item 2 of argv all notifications allNotificationsList ¬
         default notifications enabledNotificationsList ¬
         icon of application item 3 of argv
      notify with name ¬
         item 1 of argv title item 4 of argv ¬
         description ¬
         item 5 of argv application name item 2 of argv
   end tell
end run

Dieses Script ist ziemlich selbsterklärend und besteht hauptsächlich aus Informationen der Growl Dokumentation. Mehr gibts eigentlich auch nicht zu erkären. Also wünsch ich viel Spaß beim growlen.

3 Kommentare bis jetzt


  1. Giuseppe

    24. Jul 2009 um 07:41

    Klasse! Genau das was ich gerade gesucht habe. Funktioniert bestens.

     
  2. Mech

    1. Aug 2009 um 17:49

    Interessanter Ansatz. Werds gleich mal ausprobieren. Hatte mich auch schon lange gefragt ob das möglich ist.

     
  3. Hans Dietrich

    9. Nov 2009 um 14:34

    Glückwunsch zum neuen Blog!

     
Kommentar hinzufügen
 

Artikel Tags


 

Verwandte Artikel


Websitestatistik und Zugriffsanalyse mit Mint

Websitestatistik und Zugriffsanalyse mit MintDa ein erfolgreicher Webauftritt immer wieder dynamisch an seine Leser angepasst werden sollte, ist es wichtig diesen auch genau zu kennen (mehr…)

Standortbestimmung per Javascript

Standortbestimmung per JavascriptÜber die Geolocation API, das Google Gears und z.B. Firefox ab 3.5 unterstützt, lassen sich einfach ortsbezogene Dienste im Browser realisieren. (mehr…)