xdesktopwaves is a cellular automata setting the background of your X Windows desktop under water. Windows and mouse are like ships on the sea. Each movement of these ends up in moving water waves. You can even have rain and/or storm stirring up the water (-rain 0-10, -storm 0-10).
In shaped mode, which is enabled by default, xdesktopwaves usually works good together with other desktop background programs like xfishtank, xpenguins, xsnow and xearth. They are all under water.
xdesktopwaves has many options. The most important ones are -quality 0-9 and -colortheme 0-9. The first one is for adjusting the balance between display quality and system load. And the other option is for selecting a set of colors for visualization. Choose a color theme suitable for your background picture. There are even options for fine-tuning.
Unfortunately, xdesktopwaves does not function on every X11 desktop, because some modern window managers (or compositing managers) do not support classic X11 override-redirect backdrop windows. You will have to try it out. If it does not work, please try it with the -root option, then with the -wmbackdrop option, and finally with -window (but with the last one, xdesktopwaves does not appear in the background). Please read the comments on these options more below. It may also be helpful to add -opaque.
If supported by the window manager, you should decide to enable opaque moving and resizing of windows ("display content in moving windows" or something like that), instead of displaying just a frame. This may result in very dynamic wave effects - try to pile up a big wave by moving a window slowly.
Starting and stopping
For a first try, open a shell and type xdesktopwaves followed by desired options. Example:
Just press CTRL-C for stopping.
Now, if you want to create menu entries in your desktop environment, window manager or wherever: For starting, create an entry containing a command like the example above. And for stopping, create an entry containing this command:
Hint: Whenever xdesktopwaves is starting, it automatically tells other instances of xdesktopwaves to terminate. So there cannot be more than one instance.
xdesktopwaves every day?
Depending on the quality settings, xdesktopwaves can be very CPU-intensive. To get along with this, the program goes into an idle mode if there are no waves on the water or if the output window is obscured. The cellular automata stops computing in that mode. Additionally, you can give a lower priority to the xdesktopwaves process (see -nice).
If you want to have xdesktopwaves automatically started when starting X Windows, insert the start command in the file $HOME/.xinitrc (see startx(1)). But don't forget to append & to the command. This way, xdesktopwaves is started before the window manager (may or may not work, depending on the type of window manager).
- -h or -help
Print a short help and exit.
- -V or -version
Print version and exit.
- -v or -verbose
Print some information about what's going on.
- -vv or -veryverbose
Print much information (for debugging).
- -d name or -display name
Connect to the display named name.
- -e or -end
Exit after terminating a possibly already existing instance of xdesktopwaves.
Window Creation Options
- -r or -root
Do not create any window, draw the waves to the (virtual) root window. This option implies -stippled if not -opaque.
- -w or -window
Create an ordinary normal window. For some window managers you'll even have to give -opaque.
- -b or -backdrop (default)
Create an override-redirect backdrop window on the (virtual) root window.
- -wmb or -wmbackdrop
Create a backdrop window using the extended window manager hints. This is not supported by every window manager. And if it is, there's still the problem that it may not be possible to activate icons or menus on the desktop background (possibly just at every second scan-line in shaped mode).
- -nxb or -noexitbutton
Do not create the (emergency) exit button. With some window managers (or compositing managers), the backdropping fails in a way that the user cannot see or control any window or menu on the whole desktop. Unfortunately, the automatic backdrop failure detection is not able to detect all such situation. Therefore an exit button is created at top level in the upper-right corner of the desktop. With this option, that button is not created. This only concerns -root, -backdrop, and -wmbackdrop.
- -nbf or -nobackdropfail
Do not abort if backdropping fails. Normally, the program exits automatically when there is nothing in front of the xdesktopwaves window, because then the backdropping has probably failed in lack of support by the window manager. With this option, that exiting does not happen. This only concerns -backdrop and -wmbackdrop.
- -o or -opaque
Have no transparency at all.
- -t or -stippled
Have faked transparency. This lets the desktop background picture shine through. Other desktop background programs and desktop icons may not be visible. The window of xdesktopwaves inherits the background from the root window, and the waves are drawn in stippled mode. This option implies -nodoublebuffer.
- -s or -shaped (default)
Have better transparency. Everything behind xdesktopwaves shines through. The window of xdesktopwaves is shaped by every second scan-line, using the XShape extension. This option is ignored if -root, otherwise this option implies -doublebuffer.
- -wmo percent or -wmopacity percent
Have best transparency. This is still highly experimental! It sets the window property _NET_WM_WINDOW_OPACITY, which is a hint for the window manager respectively composite manager to render the window with alpha blending. This option is ignored if -root.
- -q number or -quality number (default: 5)
Set overall quality of the waves. number can be 0 to 9. The higher the quality, the higher the CPU/network load. This option is a comfortable alternative for -framerate, -simsperframe, -eventsperframe, -resdivision, -cellsize and -maxcolors.
- -fr rate or -framerate rate
Set maximum frame rate in hertz. This option is overridden by -quality.
- -sf count or -simsperframe count
Set number of simulation steps per frame. Hereby you can adapt the speed of the waves. This option is overridden by -quality.
- -ef count or -eventsperframe count
Set number of event processings per frame. This can improve the trails of fast moving objects (mouse and windows), but it can even incur a sensible higher CPU load, because of a worse cache utilization. Maximum is the number of simulation steps per frame. This option is overridden by -quality.
- -rd rdx rdy or -resdivision rdx rdy
Set overall division of resolution in x and y direction. These values have dramatic influence on the CPU usage on both sides, the client and the server. This option is overridden by -quality.
- -cs cw ch or -cellsize cw ch
Set width and height of the cells of water. These values have dramatic influence on the CPU usage on the client side. The water surface is made of rectangular cells. This is a kind of an image, where each pixel is a cell. For each frame, that image is scaled up to the screen size in two steps. In the first step it is scaled by (cw, ch) with bi-linear interpolation, and in the second step it is scaled by (rdx, rdy) without interpolation. This option is overridden by -quality.
- -mc count or -maxcolors count
Set maximum number of colors for drawing the waves. The higher the color count, the more rectangles may be sent to the X server. count can be 2 to 128. This option is overridden by -quality.
- -db or -doublebuffer (default)
Draw with double buffering. This option is ignored if -stippled.
- -ndb or -nodoublebuffer
Draw without double buffering. This option is ignored if -shaped.
- -n increment or -nice increment (default: 0)
Increment nice value of the xdesktopwaves process. The higher the nice value, the lower the process priority. A typical value for increment is 10.
- -i or -idle (default)
Go idle if there are no waves or if the output window is obscured. This can spare CPU cycles.
- -ni or -noidle
Never go idle.
- -mo number or -maxoptimization number (default: 2)
Set maximum optimization by CPU instruction set. If compiled with GCC for x86 (32 or 64-bit), 1 means MMX and 2 means SSE2. 0 means to have no special optimization.
- -c number or -colortheme number (default: 0)
Select a color theme. number can be 0 to 9. Just try them through. This option is a comfortable alternative for -watercolor, -skycolor and -lightcolor.
- -wc color or -watercolor color
Set color of water. This option is overridden by -colortheme.
- -sc color or -skycolor color
Set color of sky reflections. This option is overridden by -colortheme.
- -lc color or -lightcolor color
Set color of light reflections. This option is overridden by -colortheme.
- -wm or -wavesbymouse (default)
Produce waves by mouse pointer movements.
- -nwm or -nowavesbymouse
Ignore the mouse.
- -ww or -wavesbywindows (default)
Produce waves by client windows.
- -nww or -nowavesbywindows
Ignore client windows.
- -rn intensity or -rain intensity (default: 0)
Simulate raindrops falling on the water. intensity can be 0 (no rain) to 10 (cloudburst).
- -st intensity or -storm intensity (default: 0)
Simulate a storm blowing on the water. intensity can be 0 (no wind) to 10 (strong storm).
- -vs value or -viscosity value (default: 3)
Set viscosity of the fluid. value can be 1 to 5. The higher the viscosity, the shorter the lifetime of waves.
- -si intensity or -skyintensity intensity (default: 5)
Set intensity of sky reflections. intensity can be 1 to 10.
- -li intensity or -lightintensity intensity (default: 5)
Set intensity of light reflections. intensity can be 1 to 10.
- -lal degrees or -lightaltitude degrees (default: 30)
Set altitude of the source of light. degrees can be 0 to 90.
- -laz degrees or -lightazimuth degrees (default: -35)
Set azimuth of the source of light. degrees can be -360 to 360.
- xdesktopwaves -quality 6 -colortheme 1 -verbose
Increased quality. Blue color theme. Print information about settings and performance.
- xdesktopwaves -q 6 -c 1 -v
Short cut of the previous example.
- xdesktopwaves -c 2 -rn 8 -r -o
Dark night with flashy lights. It's raining. Draw to the root window without any transparency.
xfishtank, xpenguins(1), xearth(1), xsnow(1), xlife(1x), xsetroot(1), startx(1)
Oliver Hamann (firstname.lastname@example.org)
xdesktopwaves is copyrighted (C) 2004,2019 by Oliver Hamann
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA