Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xswarm(6) — Dell System V Release 4 Issue 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought



XSWARM(6)               UNIX System V(January 30, 1991)               XSWARM(6)


NAME
      Xswarm Version 2.2 - X11 animated toy

SYNOPSIS
      xswarm [-hq?vprVx] [-t timeout] [-D delay] [-g geometry] [-d
      host:display] [-b bees] [-a bee-acceleration] [-s bee-velocity] [-A
      wasp-acceleration] [-S wasp-velocity] [-B border-width] [-w wasp-color]
      [-c bee-color] [-C background-color]

DESCRIPTION
      Xswarm is an X11 client that animates a group of line segments.  One line
      is called the wasp and the others are the bees.  The bees constantly
      accelerate toward the wasp, forming a cute pattern that continually
      changes.  Because Xswarm is commonly left running in the root window, it
      was made possible to control how much cpu time it uses with the -d
      option.

      If a mouse button is pressed while the pointer is in the xswarm window,
      the wasp becomes controlled by the mouse.  Control is released when the
      mouse button is pressed again.  To kill Xswarm , press q in it's window.

      The parameters that affect behavior of the swarm are controllable by the
      user through command line parameters.  Some of the niftier features are
      controlling the wasp with the mouse, putting it in the root window, using
      it as a screen saver, and making the swarm fly "above" a background
      bitmap.

      After playing with Xswarm interactively, one of it's common uses is in
      the root window where it helps break the monotony of X.  When putting it
      there, don't forget to play with the -V and -x options!

      One of the recently added capabilities of Xswarm is screen saving.  If a
      non-zero timeout is given with the -t option, the screen will be cleared
      after the given amount of idle time and the swarm will animate until a
      key is pressed or the mouse is moved.  As far as I know, this is the
      first example of an X screen saver other than the one built into the
      server.  By screen saver, I mean a program that does not require a signal
      from the user to take over the screen.

OPTIONS
      Xswarm has the following options:

      -h, -q, -?
            Display usage message and exit.

      -v    Display verbose information about the current settings.

      -p    Use the mouse (pointer) button to control the wasp.  This can be
            turned on and off at any time by pressing a button in the window.





10/89                                                                    Page 1







XSWARM(6)               UNIX System V(January 30, 1991)               XSWARM(6)


      -r    Use root window.

      -V    Stay in the clear area of the root window.  (Only useful with -r.)

      -x    Use xor raster operation so that the bees don't destroy the root
            bitmap.  (Only useful with -r.)

      -t timeout
            This is the number of seconds of idle time to wait before clearing
            the screen.  The idle swarm disappears when a key is pressed or the
            mouse is moved.

      -D delay
            This is the non-blocking delay between frames. (in milliseconds)

      -g geometry
            like -g 500x450+100+200

      -d host:display
            like -d spacsun:0.0 or -d unix:0.0

      -b bees
            This is the number of bees that will be flying around.

      -a bee-acceleration
            This is measured in pixels per frame per frame. (try 2-10)

      -s bee-velocity
            This is measured in pixels per frame. (try 5-20)

      -A wasp-acceleration
            This is measured in pixels per frame per frame. (try 2-10)

      -S wasp-velocity
            This is measured in pixels per frame. (try 5-20)

      -w wasp-color
            One of the colors in .../lib/X11/rgb.txt or a color of the form
            #rrggbb in hexadecimal.  For instance, #ef9595 is sort of a flesh
            tone.  r stands for red, g stands for green, and b stands for blue.

      -c bee-color

      -C background-color
            If you are using -x, then you may have to twiddle with this color
            in order to get the bees to show up.  (-x works well with black and
            white)

EXAMPLES
      For a swarm that doesn't stick so tightly to the wasp, try a larger speed
      limit for the bees, like this...



Page 2                                                                    10/89







XSWARM(6)               UNIX System V(January 30, 1991)               XSWARM(6)


      xswarm -s 16

      For a wasp that gets away more often, give the wasp a higher speed limit
      and better acceleration, like this...

      xswarm -A 7 -S 20

      To put the swarm in you background without harming your root bitmap, do
      this...

      xswarm -r -x -V

      You may need to fiddle with -w, -c, and -C to make the swarm visible...

      xswarm -r -x -V -w red -c blue -C green

      To speed up the swarm, decrease the delay between frames...

      xswarm -D 10  (Try taking control with the mouse button.)

      To use xswarm as a screen saver, put a line like this in your X startup
      script...

      xswarm -t 300 -w red -c blue

BUGS
      I still haven't gotten backing store to work perfectly in the root window
      with the xor raster operation.  Occasionally, the swarm leaves a semi-
      permanent mark on the root window.  If anyone is interested in fixing up
      any part of xswarm, then please feel free, but I would like a copy of the
      changes.

      Please let me know if you have any problems with the screen saver
      feature.  It seems to work just fine on the Sun-4's that I use, but it
      occasionally flakes out on the DecStation 3100's.

MISCELLANEOUS RAMBLINGS
      Implementing the screen saver feature took alot of thinking.  I would be
      VERY interested in hearing of any other schemes for detecting user
      inactivity.  The way I did it seems a little messy to me, but here it is.
      Initially, I traverse the entire window hierarchy.  As I get to each
      window, I do an XSelectInput() on it.  Then when I want to watch for user
      activity, I increment a timer and check for events.  If there are any
      events, then I zero the timer.  If the timer exceeds whatever the timeout
      is, then I toss up the screen saver window.  Does anyone have better
      ideas on how to watch for user activity in ALL windows other than the way
      I described?

      I admit that I've gotten many ideas from public domain software, but I've
      tried to give credit to the original authors at least in the
      documentation.  If you use any part of xswarm or the swarm animation
      algorithm, then please include my name in your man page/documentation


10/89                                                                    Page 3







XSWARM(6)               UNIX System V(January 30, 1991)               XSWARM(6)


      somewhere.

AUTHOR
      Xswarm's author is Jeff Butterworth (butterwo@cs.unc.edu).

      Looking at the source code to psychoII helped me learn how to open a
      window.  Taking over the screen was surprisingly simple once I looked at
      the source code for meltdown written by Dave Lemke (lemke@ncd.com).  The
      following people have helped immensely with bug fixes and suggestions:

            David Elliott: tips for SYSV nap() and the sizehints structure
            Karl Fox: improved the backing store problem
            Arne Helme: fixed "nap" function for HP machines
            Casey Leedom: supplied a simple imakefile and man page
            Rob Nelson: added correct resizing
            Andreas ?Stolcke?: fixed -g option, added virtual root
            Bill Trost: explained the race condition in nap(), added mouse control
            Jon Webb: bouncing against windows while in the root window




































Page 4                                                                    10/89





Typewritten Software • bear@typewritten.org • Edmonds, WA 98026