WinLock

Updated 08/31/2004

Download

Current Version

Older Versions

Setup Window

View Larger Version

Installation

Download/uncompress the zipped file and run the setup program.

Change Log

Version 0.50 to 0.51

  • Added C Curve mode
  • Added then 'Random Screen Saver' from/to time to the setup screen
  • Changed setup program to better handle upgrades

The random screen saver uses a random value from within a range to determine when to change the current running mode.  This value was hard coded to be between 10 and 30 seconds.  These parameters have now been exposed on the advanced tab on the setup screen.

Version 0.xx to 0.50

I finally got around to uploading the rewrite of WinLock.  It works in a much more modular fashion (similar to xscreensaver) than the original monolithic one.  Each mode is a separate program that is controlled by the master screen saver.  The master program spawns a separate process for each screen in the display.  Note, multi-screen support is similar to the original version of WinLock, i.e. separate video cards are treated as separate screens while multi-out cards are treated as a single screen.

The three modes of operation are:

  • Random Screen Saver - A random mode is picked from the checked items in the list of available modes.
  • Selected Screen Saver - The highlighted mode from the list of availabel modes is used.
  • Blank Screen - Blanks the screen.  Boring.  Included for sake of completeness.

Since the architecture change, several new modes have been added

  • BSOD
  • Circuit
  • Engine
  • Flying Toasters
  • IFS
  • Squiral
  • Starfish
  • Triangle

Another benifit of the change is that each mode can now be run windowed separately from the main screen saver.  This makes for great distractions while you are trying to get something else done.

Known problems

Options for each individual modes (pulled from the corresponding XML file) are still are not complete.  Hopefully I will get to those sometime in the near future.

I have had problems with the OpenGL modes on some systems.  I don't know if this is due to my flakey code, or flakey GL drivers.

I have also had problems with modes that do a BitBlt of the desktop window on displays that are running at a high resolution (3200x1280 in my test case). Once again, I don't know if this is bad code on my part or simply Windows being its usual brain dead self.

Notes

Just like xlock(more) and xscreensaver and unlike other Window's screen savers, WinLock does not stop when just moving the mouse.  A key press or mouse button press are required for this.

Winlock should handle multi-screen displays, and even allow for different modes or different options on each display.  Dual output video cards don't count as multi-screen since Windows reports it as only one monitor.

History and Other Stuff

I first came across xlock on a RS/6000 box while in school.  At the time the swarm mode was my favorite.  Fast forward to a couple of years ago.  When I first started picking up Delphi I looked for a 'simple' project to play around with.  This is the result.  It is a rewrite of several of the modes available in xlock (and now xscreensaver) in Delphi for the Windows platform.  Like WinEyes, I wrote this simply because it was 'fun' and I missed these programs whenever I had to use a Windows box.  To me, the screensavers available under X were always so much more interesting than those that I usually find on Windows.  A person can only take so many dancing babies or photo slide shows.  (Update 08/27/04: Ironically enough, after we had our first baby, I did write a slide show based screen saver and now use it as my default.  Go figure.)

This is not a port of xlock or xscreensaver.  It is a complete rewrite that implements the same algorithms.  I based these off of the original source where I could (I even kept some of the comments!).  Where possible I have tried to give credit to whoever wrote the original version.

There is a direct port of xlockmore available for Windows.  It is much truer to the original than mine.

Since this program has been played with off and on over the past few years, it now stands as a good example of "How not to write software".  I am pleased with a few of the modes, but when I look back at the some of the others, I think "What could I possibly have been thinking?" 

Note for those complain about Xlib.  The complexity of some of these modes increased quite a bit when trying to get Win32 to do something that is usually quite simple in Xlib.

Modes

Here is a list of the available modes:

Attraction

Attraction

Simulation of a pair of quasi-gravitational fields

Based on attraction.c by Jamie Zawinski

Ball

Ball

Shows bouncing balls

Based on ball.c by Heath Rice

Block Tube

Block Tube

A shifting tunnel of reflective blocks

Based on blocktube.c by Lars Damerow

Requires OpenGL

BSOD

BSOD

Blue Screen of Death: the finest in personal computer emulation

Based on bsod.c by Jamie Zawinski

Cage

Cage

Shows the Impossible Cage, an Escher-like GL scene

Based on cage.c by Marcelo F. Vianna

Requires OpenGL

C Curve

C Curve

Draws self-similar linear fractals including the classic "C Curve"

Based on ccurve.c by Rick Campbell

Cage

Circuit

Random electronic components floating around

Based on circuit.c by Ben Buxton

Requires OpenGL

Daisy

Daisy

Shows a meadow of daisies

Based on daisy.c by David Bagley

Decay Screen

Decay Screen

Takes an image and makes it melt

Based on decayscreen.c by Jamie Zawinski

Deco

Deco

Shows art as ugly as sin

Based on deco.c by Jamie Zawinski

Discrete

Discrete

Shows various discrete maps

Based on discrete.c by Tim Auckland

Endgame

Endgame

Replays brilliant chess game endings.

Based on endgame.c by Blair Tennessy

Requires OpenGL

Endgame

Engine

GL representation of a N stroke engine

Based on engine.c by Ben Buxton

Requires OpenGL

Euler-2D

Euler-2D

Sumulates 2D incompressible inviscid fluid flow.

Based on euler2d.c by Stephen Montgomery-Smith

Fadeplot

Fadeplot

Shows a fading plot of sine squared

Based on fadeplot.c by Bas Van Gaalen

Flipflop

Flipflop

Shows flipping colored blocks

Based on flipflop.c by Kevin Ogden

Requires OpenGL

Flow

Flow

Shows dynamic strange attractors

Based on flow.c by Tim Auckland

Flying Toasters

Flying Toasters

raws 3D flying toasters, and toast

Based on flyingtoasters.c by Jamie Zawinski

Requires OpenGL

Forest (1)

Forest (1)

Shows binary trees of a fractal forest

Based on forest.c (xlock) by John Heidemann

Forest (2)

Forest (2)

Shows more fractal trees

Based on forest.c (xscreensaver) by Peter Baumung

Galaxy

Galaxy

Shows spinning galaxies

Based on galaxy.c by Uli Siegmund, Harald Backert and Hubert Feyrer

Gears

Gears

Shows 3D gear wheels

Based on gears.c by Danny Sung

Requires OpenGL

Grav

Grav

Simulation of a planetary system

Based on grav.c by Greg Bowering

Halftone

Halftone

Draws the gravitational force in each point on the screen seen through a halftone dot pattern

Based on halftone.c by Peter Jaric

Hanoi

Hanoi

Solves the Towers of Hanoi

By Paul Burdette

Helix

Helix

Shows string art

Based on helix.c by Jamie Zawinski

Hopalong

Hopalong

Shows real plane iterated fractals

Based on hop.c by Patrick J. Naughton

Hyper Cube

Hyper Cube

Shows a 2D projection of 3D objects which are projects of the 4D analog to the cube

Based on hypercube.c by Jamie Zawinski

IFS

IFS

Shows a modified iterated function system

Based on ifs.c by Massimino Pascal

Kaleidescope

Kaleidescope

Another clone of an ancient meme, consisting largely of frenetic rotational motion of colored lines

Based on kaleidescope.c by Ron Tapia

Kumppa

Kumppa

Spiraling, spinning, and very, very fast splashes of color rush towards the screen

Based on kumppa.c by Teemu Suutari

Laser

Laser

Shows spinning lasers

Based on laser.c by Pascal Pensa

Lisa

Lisa

Shows animated lisajous loops

Based on lisa.c by Caleb Cullen

Lissie

Lissie

Shows lissajous worms

Based on lissie.c by Alexander Jolk

Lyapunov

Lyapunov

Shows lyapunov space

Based on lyapunov.c by ????????

Matrix

Matrix

Shows the Matrix

Based on matrix.c by Erik O'Shaughnessy

Maze

Maze

Shows a random maze and a depth first search solution

Based on maze.c (xlock) by Sun Microsystems, Inc.

Moebius

Moebius

Shows Moebius Strip II, an Escher-like GL scene with ants

Based on moebius.c by Marcelo F. Vianna

Requires OpenGL

Moire

Moire

Shows circular interference patterns

Based on moire.c by Jamie Zawinski

Mountain

Mountain

Shows Papo's mountain range

Based on mountain.c by Pascal Pensa

Petal

Petal

Shows various GCD flowers

Based on petal.c (xlock) by Carniegie Mellon University

Pong

Pong

Plays Pong

Based on pong.c by Jeremy English

Pop Squares

Pop Squares

Draws a pop-artish looking grid of pulsing colors

Based on popsquares.c by Levi Burton

Pulsar

Pulsar

Shows a number of rotating, pulsing rectangles

Based on pulsar.c by David Konerding

Requires OpenGL

Qix

Qix

Shows spinning lines a'la Qix(tm)

Based on qix.c by Patrick J. Naughton

Queens

Queens

Solves N-Queens problem

Based on queens.c by Blair Tennessy

Requires OpenGL

Roll

Roll

Shows a rolling ball

Based on roll.c by Charles Vidal

Rorschach

Rorschach

Shows Rorschach Patterns

Based on rorschach.c by Jamie Zawinski

Rotor

Rotor

Shows Tom's Roto-Rooter

Based on rotor.c by Patrick J. Naughton

Rotzoomer

Rotzoomer

Creates a collage of rotated and scaled portions of the screen

Based on rotzoomer.c by Claudio Matsuoka

Rubik

Rubik

Shows an auto-solving Rubik's Cube

Based on rubik.c by Marcelo F. Vianna

Requires OpenGL

Shape

Shape

Shows overlapping rectangles, ellipses and triangles

Based on shape.c by Jamie Zawinski

Sierpinski

Sierpinski

Shows Sierpinski's Triangle Fractal

Based on sierpinski.c by Desmond Daignault

Slidescreen

Slidescreen

Takes the desktop image and turns it into a slide puzzle

Based on slidescreen.c by Jamie Zawinski

Slip

Slip

Shows slipping blits

Based on slip.c by Scott Draves

Sphere

Sphere

Shows a bunch of shaded spheres

Based on sphere.c by Sun Microsystems, Inc.

Spiral

Spiral

Shows a helical locus of points

Based on spiral.c by Darrick Brown

Spirograph

Spirograph

The Spiral Generator

Based on xspirograph.c by Rohit Singh

Squiral

Squiral

Show square spirals

Based on squiral.c by Jeff Epler

Stairs

Stairs

Shows Infinite Stairs - an Escher-like GL scene

Based on stairs.c by Marcelo F. Vianna

Requires OpenGL

Starfish

Starfish

Radially-symmetric throbbing colormap-hacking graphics demo

Based on starfish.c by Jamie Zawinski

Super Quadrics

Super Quadrics

Shows 3D mathematical shapes

Based on superquadrics.c by Ed Mackey

Requires OpenGL

Swarm

Swarm

Shows a swarm of bees following a wasp

Based on swarm.c (xlock) by Patrick J. Naughton

Thornbird

Thornbird

Shows an animated Bird in a Thorn Bush fractal map

Based on thornbird.c by Tim Aukland

Tik Tak

Tik Tak

Shows rotating polygons

Based on tiktak.c by Jouk Jansen

Triangle

Triangle

Shows random mountains using iterative subdivision of triangles

Based on triangle.c by Tobias Gloth

Tube

Tube

Shows an animated tube

Based on tube.c by Dan Stromberg

Vines

Vines

Another geometric pattern generator

Based on vines.c by Tracy Camp

Worm

Worm

Shows wiggly worms

Based on worm.c by Patrick J. Naughton

Zoom

Zoom

Zooms in on part of the screen and then moves around

Based on zoom.c by James Macnicol