#!/usr/bin/php speccy - X window screensaver

When this program is run, it waits for a specified amount of time (default is 10 minutes) for the user to go idle, and after that it picks a random ZX Spectrum screen memory dump file (.scr file) and displays it by emulating the ZX Spectrum screen structure.

In English: this program is a screensaver which displays random ZX Spectrum loading screens exactly in the same way as the ZX Spectrum machine would do if it loaded a game from tape.

You need:
  1. this program
  2. some .scr files so the program has something to display
  3. X Window System up and running (with color depth more than 1)

Source code

GNU/Linux binary compiled with "gcc -Wall -L/usr/X11R6/lib -lX11 speccy.c -o speccy" (Slackware with GCC 3.3.3)

Collection of .scr files.

More .scr files can be downloaded from, for example, World Of Spectrum.
Using speccy screensaver is quite straightforward - if you just want to run it with default settings, just define the directory from where the program should load the screens - and because it's a screensaver and not an interactive program per se, it is advised to run it as a background task and disable X Window's screen blanking (so that's why there's "xset s off" and & at the end of the command line):
~$ xset s off
~$ speccy -d scr/ &
Now waiting for the user to go idle...
--version displays the version and --help displays help:
~$ speccy --help
Usage: speccy [OPTION(S)] -scr [DIRECTORY]
Display Spectrum .scr screen dumps in a screensaver-like fashion.

-d DIRECTORY choose random .scr files from DIRECTORY (mandatory)
-t NUMBER number of minutes of idleness before running saver

-s NUMBER drawing speed (smaller is slower)
-w NUMBER number of seconds to wait between images

-i COLOR initial INK color
-p COLOR initial PAPER color
-b use BRIGHT initial colors
-c clear screen to initial color before new image

COLOR values:
0=black, 1=blue, 2=red, 3=magenta, 4=green, 5=cyan, 6=yellow, 7=white

If -t 0 (idle wait is zero), the program will instantly start to display .scr files and will exit after the user touches mouse or keyboard.

Report bugs to <arttu@solvalou.com>.
If you notice any bugs or have any suggestions how to improve this program, don't hesitate to contact me. If anyone has any hints how to elegantly poll for keyboard events from all windows, I'd appreciate if you let me know how to do that - currenty the screensaver only checks the mouse for user "idleness".
    Dan Dare


Nightmare Rally