Automator – Workflow or AppleScript to Close Safari After a Period of Time

applescriptautomator

I would like to create an Automator workflow (or some similar function) that will close down Safari after a specified period of time.

For instance, I simply want to run Pandora in Safari during the night, but have it close out after 30 minutes to 1 hour, as sort of a sleep timer. I am a very new Mac user so detailed instructions would be great. I have familiarized myself with creating some simple Automator workflows, but I have no experience using AppleScript.

Best Answer

Here is the AppleScript code, which you can put in your workflow, by implementing an AppleScript item, and copy-paste the code in. The time is configurable, but you need an exact sleep time, which I can add if you could elaborate some more on the time. Here is the code via CulturedCode.

global quit_after, check_every

set quit_after to 2700
set check_every to 10
set minute to quit_after / 60

display dialog "Check is performed every " & check_every & " seconds. Things will be quit after " & minute & " minutesof system inactivity."

on reopen
    display dialog "Check is performed every " & check_every & " seconds. Things will be quit after " & minute & " minutes of system inactivity."
end reopen

on idle
    set idletime to do shell script "echo $((`ioreg -c IOHIDSystem | sed -e '/HIDIdleTime/ !{ d' -e 't' -e '}' -e 's/.* = //g' -e 'q'` / 1000000000))"
    if (idletime as integer) > quit_after then
        tell application "System Events"
            if ((name of processes) contains "Safari") then
                tell application "Safari" to quit
            end if
        end tell
    end if
    return check_every
end idle