How can I automatically run an AppleScript on shutdown or logout?

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.


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>