10.6: Run screen savers on top of the login window

Jan 12, '10 07:30:00AM

Contributed by: V.K.

Snow Leopard only hintAs many people may know, Apple made it all but impossible to run any screen savers on top of the login window (i.e. after some time, a screen saver appears over the login window) in Leopard by tightening up security requirements on processes that can run over the login window via launchd. This made workarounds that worked prior to 10.5 impossible to use. (The only screensaver that I know of that can run behind the login window in 10.5 is this one.)

I'm happy to report that, as of Snow Leopard, running screen savers behind the login window is finally officially supported. This was brought to my attention by magnusviri in this Apple Discussions thread .

Here is how to make it work...

Use Property List Editor or TextWrangler to create the file /Library » Preferences » com.apple.screensaver.plist with the following content:

<?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>loginWindowIdleTime</key>
<integer>180</integer>
<key>loginWindowModulePath</key>
<string>/System/Library/Screen Savers/Nature Patterns.slideSaver</string>
<key>moduleDict</key>
<dict>
<key>moduleName</key>
<string>Skyrocket</string>
<key>path</key>
<string>System/Library/Screen Savers/Nature Patterns.slideSaver</string>
<key>type</key>
<integer>0</integer>
</dict>
</dict>
</plist>
The loginWindowIdleTime time interval is in seconds. You can use any default (OS X-provided) screensaver from /System » Library » Screensavers.

Interestingly, this file does need not to be owned by root, so it can be created by an admin user without entering an admin password. This might be construed as a security weakness. However, I was not able to make this work with any third-party screen savers, even when I placed them directly into /System » Library » Screensavers (which does require an admin password).

If somebody does know how to make this work with third-party screen savers, please post in the comments.

[robg adds: If you wish to use other screen savers, first set the desired screen saver in the Desktop & Screen Savers System Preferences panel. Then go into your user's Library » Preferences » ByHost folder, and open the file com.apple.screensavers.RANDOM_TEXT.plist. Copy and paste the relevant lines from that file into the above file -- all the entries in the <dict> section, plus you'll need to replicate the path key's string into the loginWindowModulePath key. I tested this, and it works -- the Arabesque screen saver now runs after 30 seconds of login window display.]

Comments (3)


Mac OS X Hints
http://hints.macworld.com/article.php?story=20100107141643248