Uptime

Angezeigt werden alle ungelesenen eMails aus Apple Mail. Die Anzeige erfolgt jedoch nur, wenn Apple Mail geöffnet ist. Wenn ich am Rechner sitze, lasse ich Mail meistens ausgeblendet im Hintergrund laufen. Das eigentliche Geektool Skript ist recht kurz. Der Zugriff auf Apple Mail aus Geektool ist nicht möglich. Deshalb ruft Geektool ein Applescript auf, welches die Abfrage nach neuen Mails erledigt.

Das Geektool Skript:

01: mails=`osascript ~/Geektool/CheckNewMail.scpt`
02: if [ "$mails" != "" ]
03: then
04: echo "MAIL:"
05: echo
06: echo "$mails"
07: fi

Zeile 1:

Die Variable "mails" wird mit den Ergebnissen des Applescriptes "CheckNewMail.scpt" belegt. 

Zeile 2 bis 7:

Wenn die Variable "mails" nicht leer ist, erfolgt eine Ausgabe.

 

So sieht das Applescript aus:

01: set newline to ASCII character 10
02: tell application "System Events" to set iCalIsRunning to (name of processes) contains "Mail"
03: set finalText to ""
04: if iCalIsRunning then
05: tell application id "com.apple.mail"
06: set unreadCount to (get unread count of inbox)
07: if unreadCount > 0 then
08: set theMessages to (messages of inbox whose read status is false)
09: repeat with i from 1 to number of items in theMessages
10: set thisMessage to item i of theMessages
11: set fromMsg to (sender of thisMessage as string)
12: set subjMsg to (subject of thisMessage as string)
13: set accMsg to (name of account of mailbox of thisMessage)
14: set accMsg to "Account: " & accMsg & newline
15: if subjMsg = "" then
16: set subjMsg to newline & "   " & "KEIN BETREFF" & newline
17: else
18: set subjMsg to newline & "   Betreff: " & subjMsg & newline
19: end if
20: set finalText to finalText & i & ". " & accMsg & "   " & fromMsg & subjMsg & newline
21: end repeat
22: else
23: set finalText to "   - - Keine neue Email - -"
24: end if
25: end tell
26: else
27: set finalText to ""
28: end if
29: finalText

Ich kenne mich mit Applescript nicht wirklich aus. Dieses hier habe ich im Netz gefunden und für meine Zwecke modifiziert. 

Zeile 3:
Die Variable "finalText" wird initialisiert. Sie enthält nachher den Text, der an das Geektool Skript übergeben wird.

Zeile 6:
Die Anzahl der ungelesenen Mails wird ermittelt und der Variablen "unreadCount" übergeben.

Zeile 9 bis 13:
Aus der ungelesenen Nachricht werden Absender, Betreff und Name des eMailaccounts ausgelesen und in entsprechenden Variablen abgelegt.

Zeile 14:
Die Variable für den Accountnamen wird um den Begriff "Account:" und einen Zeilensprung erweitert.

Zeile 15 bis 19:
Wenn die Betreffzeile der Mail leer ist, wird die Variable "subjMsg" mit "KEIN BETREFF" belegt. Des Weiteren werden auch hier Zeilensprünge eingefügt.

Zeile 20:
Die Variable "finalText" wird um die gefundenen Informationen erweitert.

Zeile 9 und 21:
Die Arbeitsschritte zwischen diesen Zeilen, werden für jede ungelesene Mail wiederholt.