2

I am more used to the Javascript style event handlers,

but is there a similar thing in applescript that listens to system events like logout or shutdown to execute code

or is there a way to have an applescript run on shutdown or logout?

I know about script timer but I would rather have something free.

All my script does is mute the volume for the next startup.

2

Launch agents can be used for this. See this tutorial on MacScipter. If you are not familiar with the process, Lingon offers a simple interface to create the file. Here is an example to launch a script named ZuluDeltaNiner.scpt on login.

<?xml version="1.0" encoding="UTF-8"?>
<!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.paul.applescript_Launchd</string>
   <key>ProgramArguments</key>
   <array>
       <string>osascript</string>
       <string>/ZuluDeltaNiner.scpt</string>
   </array>
   <key>QueueDirectories</key>
   <array/>
   <key>RunAtLoad</key>
   <true/>
   <key>StartOnMount</key>
   <false/>
   <key>WatchPaths</key>
   <array/>
</dict>
</plist>
| improve this answer | |
0

Logout hooks were deprecated in 10.4, but they still work in 10.8.

echo $'#!/usr/bin/osascript\n\nset volume with output muted' > ~/.logouthook
chmod +x ~/.logouthook
sudo defaults write com.apple.loginwindow LogoutHook ~/.logouthook

sudo defaults write modifies files in /var/root/Library/Preferences/. The program can't be inserted as an argument directly.

Trapping the exit signal only seems to work when logging out and not when shutting down.

| improve this answer | |

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .