SaverLab
v1.6.1 Copyright 2001 by Brian Nenninger
Overview
SaverLab runs Mac OS X screensaver modules in regular windows. It allows you to run multiple modules simultaneously, pause, single step, and control the speed of the animations, and save animations as QuickTime movies.
When SaverLab launches, it locates all available screensaver modules and lists them in the "Modules" menu. Selecting a module from this menu opens a window in which the module runs. You can open any number of windows, including multiple copies of the same module, and they will all run simultaneously. You can resize the windows to any size you like; resizing will cause the screensaver to restart. You can also double-click a screensaver module in the Finder to open it.
SaverLab looks for screensaver modules in the same folders as does the Screen Saver Preferences panel. If you can see a screensaver in System Preferences, it should also be accessible in SaverLab. By default, the list of available modules is automatically updated every time SaverLab becomes the foreground application. This behavior can cause a short delay and can be disabled in the preferences window. The "Update List" command in the Modules menu will manually update the list of modules.
Selecting "Show Browser" will open a window listing all available modules. Checking the "Show Preview" checkbox will expand the window to show a preview of the selected module. Double-clicking a module will open it. If the "Open In Preview Mode" checkbox is checked, double-clicking a module will open it in preview mode. This is useful for modules such as FreeFlow which try to switch the screen resolution when run in non-preview mode.
The "Control" menu allows you to control the screensaver module running in the frontmost window. The following commands are available:
- Pause/Resume: Stops the animation of the screensaver module, or restarts it if it was already stopped.
- Single Step: Executes one "tick" of the screensaver module, which will usually cause it to animate a single frame. If the screensaver was not paused, this command will pause it.
- Restart: Resets the module's internal state and restarts the animation.
- Speed Up: Attempts to make the module run faster.
- Slow Down: Attempts to make the module run slower.
- Show Info: Opens an info window which shows and continuously updates the module's "Target FPS" (the number of frames per second it is trying to draw), "Current FPS" (the number of frames it drew in the last second), and content size.
- Configure: This command is only enabled if the screensaver module allows configuration. Selecting it opens the module's configuration sheet allowing you to customize its behavior.
- Show Console: Opens a window showing messages written by the running screensaver modules. This is primarily useful when testing modules that you are writing; any output to stdout or stderr will appear in this window.
- Toggle QuickTime Recording: This command is used to start and stop recording animations. When you select it the first time, "RECORDING" will appear in the window's title bar. Every frame will be saved until you select this command again. When you do, recording will stop and you will be prompted for the location to save the QuickTime movie which will be created from the frames. A status window will open displaying the progress of creating the movie; clicking the "Cancel" button will abort the process. Settings in the Preferences window control the exact behaviour of the recording process; see below for details.
Single Step, Pause, Speed Up, and Slow Down do not work for all modules, see Known Bugs/Issues.
The "Window" menu allows you to set the properties of the active window. The "Front Layer", "Standard Layer", and "Back Layer" commands allow you to set the layer of the window. "Front Layer" causes the window to float above most other windows when it is not active. Use this if you always want the window visible. "Back Layer" causes the window to be displayed behind other windows, even when it is active. This is useful if you don't want the screen saver to obstruct your other windows. "Standard Layer" is the default, when it is selected the window is displayed normally.
The Window menu also shows several predefined window sizes, from 160x120 to 800x600. Selecting one will resize the front window to that size. Selecting the "Full Screen" command causes the window to fill the entire screen. Selecting the "Make Desktop Background" will make the window full screen and put it in the back layer, effectively producing an animated desktop. (However, any icons on the desktop will be covered).
The "Select Background Image..." command allows you to select a background image for the window. This command is only enabled for modules that do not use OpenGL, since OpenGL modules overwrite the background immediately. Selecting this command opens a file selection box, in which you can select any image that Mac OS X can handle (GIF, JPEG, and TIFF images, among others). If you select a readable image, the screensaver module will restart using the new background image.
The "Preferences" item in the SaverLab menu opens the Preferences window. The "General" tab has several checkboxes to control SaverLab's behavior:
- Restore module windows on startup: If selected, screensaver modules that were running when you last quit the application will be automatically started when you run it again.
- Show module list on startup: If selected, the list of screensaver modules will always be shown when you launch the application.
- Automatically update available modules: If selected, whenever the application comes to the foreground it will recompute the list of available screensaver modules, allowing it to pick up modules that you have added or deleted. This can cause a noticeable delay, so you may wish to keep it disabled and manually update the module list using the "Update List" command in the Modules menu.
- Show module list when Dock icon is clicked: If selected, the list of screensaver modules will appear when you activate SaverLab and no other windows are open.
- Show console window when new output is received: If selected, the console window will always be shown and brought forward whenever it receives output from a screensaver module. If not selected, the console window will only automatically appear the first time it receives output; after that you can show the window using the "Show Console" command in the Control window.
The "Recording" tab controls how screensaver animations are recorded. When recording, SaverLab captures each frame and writes it to a separate file. By default, when you stop recording SaverLab creates a QuickTime movie and then deletes the individual images. The first group of radio buttons allow you to keep the individual images, with or without creating a QuickTime movie. This is useful if you want to obtain individual images, or if you want to use another program to create a movie. If you choose to save the individual images, they will be created inside a folder named "SaverLab" followed by a unique number ("SaverLab0", "SaverLab1", etc). By default these folders are created in your home directory; you can specify a different location by changing the "Images Directory" setting. You can do this by clicking the "Set" button and picking a folder, or by entering a new path in the text field. The second set of radio buttons allows you to control the frame rate of movies that SaverLab creates. By default, the frame rate of the created movie is the same rate at which the screensaver is actually running ("Target FPS" in the Show Info window). You can alternatively specify a fixed frame rate for the created movies.
An excellent collection of screensaver modules is available at http://www.epicware.com/macosxsavers.html. Others can be found at versiontracker, Softrak, or other Mac OS X software sites.
Known Bugs/Issues
- The Single Step function does not always work as expected. It does not work for some modules (in particular, the slide show modules that ship with Mac OS X) and it causes some other modules to reset to their initial state. This does not indicate a problem with those modules; it is due to the way SaverLab performs single steps.
- The "Speed Up" and "Slow Down" commands have no effect on many modules.
- Pausing and restarting certain modules causes them to revert to their initial state.
- The minimize button is disabled in module windows because minimizing active windows produces erratic results.
- All modules run in a single thread, so on multiprocessor machines only one CPU will be used. If you need to have all your CPUs drawing 3d galaxies as fast as possible, you can run a copy of SaverLab for each processor. QuickTime movies are created in separate threads, so multiprocessor machines should see some benefit there.
- In Mac OS X 10.1, the format of the slide show modules (Cosmos, Forest, etc.) has changed. As a result, if you try to run more than one different slide show module, after a short time all of them will show the images corresponding to the last module opened. A workaround is to run multiple copies of SaverLab with a different slide show module in each.
- Recording QuickTime movies requires a large amount of disk space. Each frame is stored uncompressed while recording, and the movie is saved with no compression. Long recordings can require tens or hundreds of megabytes.
Version History
1.6.1, Nov 4 2001:
- Fixed bugs relating to pausing and restarting modules.
1.6, Nov 1 2001:
- Added preferences to control recording.
- Added console window.
- Fixed bug where random number generator was not initialized.
1.5, Sep 26 2001:
- Added ability to record animations and save them as QuickTime movies.
- Updated for Mac OS X 10.1, specifically the new format of slide show modules.
1.4, Jul 1 2001:
- Added preview display in browser window.
- Added ability to open modules in preview mode.
- Added preference to control auto-update of module list.
- A much better icon.
1.3, Jun 24 2001:
- Added preferences window.
- Added window listing all screensaver modules.
- Modules can be opened by double-clicking them in the Finder.
- Added Edit menu for copying and pasting text when applicable.
- Several minor bug fixes.
- An icon! (It's not very good, improvements welcome).
1.2, Jun 9 2001:
- Added info window showing frames per second.
- Open windows and positions are saved when you exit the program and restored when you restart.
- Added Speed Up and Slow Down commands.
- Now properly locates all screen saver modules that appear in System Preferences.
1.1, Apr 8 2001:
- Added full screen mode and predefined window sizes
- Added layer control
- Added ability to assign background pictures
- Animation is stopped if the SaverLab application is hidden, which prevents errors caused by drawing into hidden windows.
- Animation is stopped if the "real" screen saver activates, so as not to take CPU time from it. (Thanks to Mike Trent for finding these bugs).
1.0, Mar 31 2001: initial release
Credits
- Mike Trent, for valuable advice and feedback.
- Eric Peyton, whose screensaver resources at epicware.com are very useful.
- Paul Sahner of DV Graphics, for the excellent icon.
Feedback
Contact me with any bug reports, comments, or suggestions at bnenninger@houston.rr.com.
License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.