packages icon

 XSWARM(6)                                                         XSWARM(6)
                              January 30, 1991

      Xswarm Version 2.3 - X11 animated toy

      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]

      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.

      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.

      -r   Use root window.

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

                                    - 1 -          Formatted:  June 30, 2022

 XSWARM(6)                                                         XSWARM(6)
                              January 30, 1991

      -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

      -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)

      For a swarm that doesn't stick so tightly to the wasp, try a larger
      speed limit for the bees, like this...  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

                                    - 2 -          Formatted:  June 30, 2022

 XSWARM(6)                                                         XSWARM(6)
                              January 30, 1991

      -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

      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.  I have occasionally had the screen
      saver window come up as a little puny window.  It has also crashed
      with an Xlib error.  I hope I've fixed these problems but let me know
      if they still exist.  I can't figure out how to make xswarm notice an
      f.delete command from the window manager.  If you know how to detect
      this then please let me know.

      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 somewhere.

      Xswarm's author is Jeff Butterworth (  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 (  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

                                    - 3 -          Formatted:  June 30, 2022

 XSWARM(6)                                                         XSWARM(6)
                              January 30, 1991

                                    - 4 -          Formatted:  June 30, 2022