Just a quick note: the following very useful tidbit was added to System Preferences’ AppleScript dictionary in Leopard.
tell application "System Preferences"
activate
reveal pane id "com.toastycode.Cuckoo"
end tell
That is, you can use reveal pane localizedName
or reveal pane id bundleId
to tell SysPrefs to switch to a given prefPane
. This is an improvement on reveal
in earlier versions of the OS, which only supported the reveal anchor someTabName in pane name
phrasing, which doesn’t fly if your preference pane doesn’t have tabs. (As noted here, you can use the pseudo-anchor main
on Apple’s tabless prefPanes, but I couldn’t find any kind of documentation on how to add “main” to my own prefPane.)
If you try the 10.5-style reveal pane
syntax on Tiger and earlier, you’ll be rewarded with a less-than-elucidating NSReceiversCantHandleCommandScriptError
. (Try saying that three times fast. Or, uh, once.)
The following AppleScript will work on all releases of Mac OS X, however:
tell application "System Preferences"
activate
-- works in 10.4 and 10.5
set current pane to pane id "com.toastycode.Cuckoo"
end tell
Just thought I’d share in case there’s some other poor soul out there trying to launch a specific preference panel from AppleScript or Cocoa.