Das Ewige Status Problem

Das ewige Problem des IM-Status. Ein Beispiel dafür folgende Situation: Ein Gedanke kommt auf. Ahh. Wunderbar. Person X ist online und der IM-Status ist auf Anwesend (oder was auch immer). Wie praktisch. Gleich mal die Idee schreiben. Reingetippt; Enter; Und nun das Warten auf eine Antwort … hm, das dauert aber … immer noch nichts. Später dann stellt sich raus. Oh, er/sie war gar nicht am Rechner. Den ganzen Tag nicht. Wie schön wäre es, wenn der Status im IM auch der Realität entsprechen würde. Aber wer macht das schon. Man hat ja x verschiedene. Da wäre iChat, Skype, Adium und was nicht noch. Kaum eine hat Lust den Status überall einzeln einzustellen. Abhilfe kann das folgende kleine Applescript schaffen. Gestartet fragt es einen nach dem Status und setzt (falls online) den Status für iChat, Adium und Skype.

[UPDATE]Es existiert ein kleiner Bug. Leider wird in iChat der Away/Available Status nicht gesetzt. Wenn man jedoch direkt nach dem setzen des Status (für iChat) ein display dialog “irgendwas” setzt, so wird auch für iChat der Status korrekt gesetzt. (Danke an hala744 für den Hinweis)

display dialog "Zu welchem Status möchtest du dich setzen?" default answer "zu Hause" buttons {" Anwesend ", " Abwesend ", " Abbrechen "} default button 1 with icon note
set MyResult to result
set MyStatus to button returned of MyResult
set MyText to text returned of MyResult
if MyStatus = " Abbrechen " then
return
else if MyStatus = " Anwesend " then
set status to "Anwesend"
else if MyStatus = " Abwesend " then
set status to "Abwesend"
end if
tell application "System Events"
set iChatIsRunning to count (every process whose name is "iChat")
end tell
tell application "System Events"
set AdiumIsRunning to count (every process whose name is "Adium")
end tell
tell application "System Events"
set SkypeIsRunning to count (every process whose name is "Skype")
end tell
if iChatIsRunning > 0 then
tell application "iChat"
if MyStatus is " Anwesend " then
set status to available
#display dialog "bin anwesend"
else if MyStatus is " Abwesend " then
set status to away
else
display dialog MyStatus
end if
set status message to MyText
end tell
end if
if AdiumIsRunning > 0 then
tell application "Adium"
if MyStatus is " Anwesend " then
go available with message MyText
else
go away with message MyText
end if
end tell
end if
if SkypeIsRunning > 0 then
tell application "Skype"
if status is "Anwesend" then
send command "SET USERSTATUS ONLINE" script name "My Script"
else
send command "SET USERSTATUS AWAY" script name "My Script"
end if
send command "SET PROFILE MOOD_TEXT " & MyText script name "setimstatus"
end tell
end if

Hier der Download des kompletten Script.