Create a script to reconnect iChat.
I created a file '~/dev/ichat-reconnect.sh':
#!/usr/bin/osascript
if appIsRunning("iChat") then
tell application "iChat"
if status is offline then
log in
end if
set originalStatus to the status message
end tell
end if
on appIsRunning(appName)
tell application "System Events" to (name of processes) contains appName
end appIsRunning
Create a LaunchAgent
LaunchAgents are the OSX equivalent of cron jobs.
In the folder ~/Library/LaunchAgents/ I created a file 'com.ichat.reconnect.plist':
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>label</key>
<string>com.ichat.reconnect</string>
<key>ProgramArguments</key>
<array>
<string>/Users/gcoller/dev/ichat-reconnect.sh</string>
</array>
<key>OnDemand</key>
<false/>
<key>Nice</key>
<integer>1</integer>
<key>StartInterval</key>
<integer>5</integer>
<key>StandardErrorPath</key>
<string>/tmp/AlTest1.err</string>
<key>StandardOutPath</key>
<string>/tmp/AlTest1.out</string>
</dict>
</plist>
Basically it means run my ichat-reconnect.sh script every 5 seconds.
Tell launch agent about your file
Issue the command:
launchctl load com.ichat.reconnect.plist
To get it started. It will start automatically on reboots.