Billboard Screensaver Setup

From WolfTech
Jump to navigation Jump to search

Billboard is run primarily on Apple computers running the webXsaver screen saver. Below are instructions on how to get the screen saver running properly and getting the screen saver to run over the OSX login screen, so that you do not need to be logged in for the screen saver to start.

webXsaver Installation and Basic Setup

First, download the webXsaver binary and install it onto the Mac. Once you have installed the screen saver, set it as the active screensaver (System Preferences > Desktop and Screen Saver > Screen Saver tab -- and then select webXsaver on the list on the left). You may want to turn on Hot Corners so that

Now that webXsaver is installed, we need to edit the URL that the bulletin board looks at. In order to do that, open up a terminal and navigate to the folder

/Library/Screen Savers/webXsaver.saver/Contents/Resources/

and open the "webloc.plist" file using the command:

pico -w webloc.plist

From there, the file should contain text like this ('Note:' the URL in the <string></string> parameters may be different)

<dict>
	<key>webLocation</key>
	<string>http://originalurl</string>
</dict>

And replace the value of <string> with http://www.wolftech.ncsu.edu/billboard/ -- so that the full file looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>webLocation</key>
	<string>http://www.wolftech.ncsu.edu/billboard/</string>
</dict>
</plist>

Getting The Screen Saver To Work Over The Login Window (OSX 10.4 and earlier only)

The hardest part of setting up webXsaver is setting it up so that it will load up when the computer is idle at the login screen. Note: Most of the code and text below is slightly modified from its original source at http://prowiki.isc-csg.upenn.edu:16080/index.php/Using_a_ScreenSaver_over_the_LoginWindow

First, open up a terminal window and navigate to the folder /Library/Scripts/UserScripts (you'll probably need to create this folder). Once in that folder, create a file called loginwindowScreenSaver.bash and paste the following code into it:

#!/bin/bash

screenSaverEngine='/System/Library/Frameworks/ScreenSaver.framework/Versions/Current/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine'

# first we check to see if we are at the loginwindow
if (( `/bin/ps -awwxco command,user | /usr/bin/grep '^loginwindow ' | /usr/bin/grep -c 'root'` > 0 )); then
	# next we look to see if the screensaver is already running
	if (( `/bin/ps -awwxco command,user | /usr/bin/grep -c '^ScreenSaverEngin '` < 1 )); then
		# and finally, we check to see that we have been idle long enough
		minIdleTime=`/usr/bin/defaults -currentHost read com.apple.screensaver idleTime`
		if [ -z "$minIdleTime" ]; then
			minIdleTime=60
		fi
		idleTime=`/usr/sbin/ioreg -c IOHIDSystem | /usr/bin/awk '/HIDIdleTime/ {print $NF/1000000000; exit}'`
		idleTime=`/bin/echo "scale=0; $idleTime/1" | /usr/bin/bc`
		if (( $idleTime > $minIdleTime )); then
			moduleName=`/usr/bin/defaults -currentHost read com.apple.screensaver moduleName`
			if [ -n "$moduleName" ]; then
				$screenSaverEngine -module $moduleName &
			else
				$screenSaverEngine &
			fi
		fi
	fi
fi

# note that this generates some complaints, but does work

After saving the file, you will need to chown the file as root and chmod it to 755 so it has permission to be run:

sudo chown root /Library/Scripts/UserScripts/loginwindowScreenSaver.bash
sudo chmod 755 /Library/Scripts/UserScripts/loginwindowScreenSaver.bash

Next, we need to enter an entry into the Crontab that will run the script. You can access the Crontab by typing the following:

sudo crontab -u root -e

This should bring up either blank window with tildes along the left hand side, or possibly other crontab entries, such as the one that Norton Antivirus puts in there. Use the arrow keys to get near the end of the last line of the file, and then push "i" to go into "insert mode" (this is a version of the "vi" editor, and is a bit arcane).

Now that you are in "insert mode" go to the end of the last line and press return a few times to get to a new line. You will then want to enter the following lines:

# Entered by <your name here> on <put the date here>
*/5	*	*	*	*	/Library/Scripts/UserScripts/loginwindowScreenSaver.bash

The first line is just a comment (and you should put your own information there), and is a good idea so that others who might be modifying this later know who has been doing what. The spaces between the *'s should be tabs (but can be single spaces... it just looks better with tabs).

Once this looks right press the 'esc' key to get out of "insert mode" and then press ":wq" and the return key to quit and save changes. Hopefully you will not get any errors.

Setting Preferences

Running the next two commands in your terminal will ensure that it is the webXsaver that will display. The "idleTime" setting of 180 seconds along with the "run every 5 minutes" should ensure that Billboard will begin displaying within 5-8 minutes of the computer sitting idly at the login screen (the timing of this is kind of finicky).

defaults -currentHost write com.apple.screensaver idleTime -int 180
defaults -currentHost write com.apple.screensaver moduleName 'webXsaver'

Additional Information

Some WolfTech slides like those provided on the eSign website use standard Macintosh fonts such as Zapfino and Brush Script MT. While these fonts will automatically be recognized when running the screen saver on a user account, they will not display when the screen saver is run over the login window until they are copied into the System's fonts folder. You can do so by running the following command:

cp /Library/Fonts/* /System/Library/Fonts/

After this, you'll be able to use any of the installed fonts on your computer in your presentations. Note: If you install any new fonts after running this command, you will need to make sure the font exists in both /Library/Fonts and /System/Library/Fonts