So i’ve been playing with Proximity and some related scripts, i wrote them based on many other location aware scripts over the 'net, yet i think i’ve nailed some of the best ideas, i’ve been using them for some days now and i’m very happy with the way they behave.
They work like this:
When you walk away from your computer with your phone -even an iPhone, which i couldn’t ever make work with Salling Clicker- it will ask if you’re really away -a workaround to a weakness from Proximity program-, if you don’t press a button, the script will activate the screen saver as well as the password protect, will save iTunes status and pause it gradually, then will save Skype and Adium status and set their status as away.
Once you come back, it will deactivate the password, quit the screen saver, restart iTunes and set Adium and Skype back to the status you had before leaving.
This couple of Applescripts avoid having to compile some stuff, or load any additional application, etc.
i think it might help someone else, and, as always, all your comments are welcome, with the community help i’m pretty sure we can make the best proximity scripts and provide a much needed central repository for all proximity related scripts.
Best regards
The “Going Away” script:
tell application "Finder"
activate
set results to display dialog " Lost contact with phone.
Screensaver will auto-activate" buttons {"Ok", "Not"} default button "Not" with icon caution giving up after 5
if (gave up of results is true) or (button returned of results is "Ok") then
tell application "System Events"
tell security preferences
set require password to wake to true
end tell
end tell
tell application "System Events"
set listproc to name of every process
if not (listproc contains "ScreenSaverEngine") then
tell application "ScreenSaverEngine" to launch
end if
--ITUNES
set musicbackg to listproc contains "iTunes"
if musicbackg then
tell application "iTunes"
if player state is playing then
set PlayState to player state
set old_volume to sound volume
repeat with i from old_volume to 0 by -1
set sound volume to i
delay 0.1
end repeat
pause
set comment of current track to "Proximity Paused"
set sound volume to old_volume
end if
end tell
end if
end tell
--ADIUM
tell application "System Events"
if ((get name of every process) contains "Adium") then
tell application "Adium"
go away
set status message of every account to "I am away from my computer right now."
end tell
end if
end tell
--SKYPE
tell application "System Events"
if ((get name of every process) contains "Skype") then
tell application "Skype"
set SkypeStatus to (send command "GET USERSTATUS" script name "StatusGetter")
if SkypeStatus = "USERSTATUS ONLINE" then
send command "SET USERSTATUS AWAY" script name "StatusSetter"
end if
end tell
end if
end tell
end if
end tell
The “Coming Back” script:
-- In this line, you have to change "YOUR PASSWORD" for your real password
set Pwd to "YOUR PASSWORD"
-- You don't need to modify anything below this line
tell application "System Events"
--ScreenSaver
if ((get name of every process) contains "ScreenSaverEngine") then
tell application "ScreenSaverEngine" to quit
delay 1
tell application "System Events"
keystroke Pwd
tell application "System Events" to keystroke return
end tell
end if
-- SKYPE
tell application "System Events"
if ((get name of the processes) contains "Skype") then
tell application "Skype"
set SkypeStatus to (send command "GET USERSTATUS" script name "StatusGetter")
if SkypeStatus = "USERSTATUS AWAY" then
send command "SET USERSTATUS ONLINE" script name "StatusSetter"
end if
end tell
end if
end tell
--ADIUM
tell application "System Events"
if ((get name of the processes) contains "Adium") then
tell application "Adium"
if status message of first account is "I am away from my computer right now." then
go available
end if
end tell
end if
end tell
--iTunes
if process "iTunes" exists then
tell application "iTunes"
if comment of current track is "Proximity Paused" then
set comment of current track to ""
set old_volume to sound volume
set sound volume to 0
play
repeat with i from 0 to (old_volume) by 1
set sound volume to i
delay 0.1
end repeat
end if
end tell
end if
tell application "System Events"
tell security preferences
set require password to wake to false
end tell
end tell
end tell