LAVAPS(1)                    Lavaps Documentation                    LAVAPS(1)

       lavaps -- a lava lamp of currently running processes


       LavaPS is an interactive process-tracking program like ``top'', but
       with a much different attitude.  Rather than presenting lots of
       specific info in digital form, it tries to present certain important
       information in a graphical analog form.  The idea is that you can run
       it in the background and get a rough idea of what's happening to your
       system without devoting much concentration to the task.

       LavaPS was inspired by Mark Weiser's idea of calm computing in this

        ``The Coming Age of Calm Technology'' by Mark Weiser and John Seely
       Brown. A revised version of Weiser & Brown. ``Designing Calm
       Technology'', PowerGrid Journal, v 1.01, (July 1996). October, 1996.

       (This program dedicated to the memory of M.W.--I hope you would have
       thought it a good hack.)

       Installation should be straightforward, just:

               make install

       If you get the message "Don't know about your host (foo) and so cannot
       read process information.", then LavaPS has not yet been ported to your
       OS.  Since process-scanning code is almost always platform-dependent,
       someone (maybe you :-) needs to port it.  See process_scan_*.cc to get

       The other main source of porting difficulty is finding and properly
       using Tcl/Tk.  Unfortuantely, this varies a lot from platform-to-
       platform.  These autoconf options may be helpful:

               --with-tcltk-lib-suffix-type=TYPE  (TYPE is either none/nodot/dot)

       AIX-specific tips

       LavaPS assumes AIX version 5L and that AIX Linux Affinity loaded
       (available on the Internet at
       AIX Linux Affinity includes the GNU C++ compiler, Tk and Tcl
       development packages and basic GNU development tools.

       The latest version of LavaPS should always be available from

       Mailing lists for LavaPS are


       To subscribe to either, send mail with "subscribe" in the BODY of the
       message to:


       Basic LavaPS is quite simple.  Blobs live and grow corresponding to
       processes in the system (see the section on "BLOBS").  Clicking the
       left mouse button on a blob shows information about that process.
       Clicking the right mouse button pops up menus that let you control
       LavaPS (see the section on "MENUS").

       LavaPS is all about blobs of virtual, non-toxic lava.  Blobs in LavaPS
       correspond to processes in the system.  When a process is started, a
       new blob is created.  When a process exits, the corresponding blob
       disappears.  Blob size is proportional to the amount of memory the
       process uses.  Blob movement is proportional to the amount of time the
       process runs (if the process never runs, the blob will never move).

       Blobs show several things.  First, the basic color (the hue)
       corresponds to the name of the program which is running.  Emacs is
       always one color, Netscape another (on my system, blue and yellow).
       Second, blobs get darker when the process doesn't run.  Over time, the
       process will become nearly black and only its border will remain
       colored.  Finally, if both physical and virtual memory are shown, then
       the part of the process will be a slightly different color showing what
       percentage of the process is not in physical memory.

       There are some more subtle aspects of blob physiology: initial
       placement is dependent on the process id (blobs appear roughly left to
       right) and user id (processes for the same user start at the same
       height, with root's processes at the top).

       Blobs also move along the longer distance of the lamp: if you resize it
       they may change direction.

       Please don't ask me about the chemical composition of the virtual lava.

       The right mouse button pops up menus which control LavaPS, including:

       Proc: control the process under the menu: ``Nice'' it (make it take
       less CPU), unnice it (the reverse; only works if you're root), or send
       it a signal.  Signals are terminate (the polite way to stop a process;
       ``terminate'' allows it to clean up after itself), kill (the forcefully
       way to stop something not listening to terminate), stop and continue
       (temporarily stop and resume the process), and hang-up (used to restart
       certain processes).  Beware that these commands will be disabled if you
       don't have privileges to run them, and under some circumstances even
       ``kill'' won't stop a process.

       Who: track processes by me or by everyone (including root, httpd,

       What: track process physical or virtual memory or both.  Most modern
       operating systems can keep all of a process in RAM (physical memory),
       or can let pages that aren't currently used float out to disk (virtual
       memory).  Virtual memory is always a superset of physical memory.  You
       can track either one, or both.  When tracking both, virtual memory
       appears as a different colored strip down the middle of the process

       How: controls blob sizing.  Putting too little or too much lava in your
       lava lamp would make it boring or overflow.  LavaPS therefore usually
       runs with patent-pending lava autosizing where blobs fill about a
       quarter of the lamp.  This feature can be turned off (at your peril)
       with the How menu.  You can also control the desired size of the blobs
       (when autosizing is enabled) or the absolute size of the blobs (when
       it's not) with the Grow and Shrink options.

       Help: you'll have to figure this one out on your own.

       Quit: this one's even harder than Help.

       LavaPS can configured from X resources (only if they're loaded with
       xrdb) or with the file $HOME/.lavapsrc.  In both cases, the format is

               lavaps.autosize: false

       setting whatever resource you want (in this case autosize) to some
       value (false).  In the .lavapsrc file, the ``lavaps'' before the period
       can be omitted.

       The following resources are supported:

       geometry (default none). Specifies the initial window location and size
       in X-style (see X(1)).

       who (default me). Whose processes should we be watching, anyway? My
       processes (set to ``me'') or everyone's (set to... ``everyone''). Can
       also be the process id of a single process if you're very single-

       what (default both). What kind of memory should blob size correspond
       to, either both, physical, or virtual.

       autosize (default true). Keep the blobs at a reasonable size by
       dynamically changing scaling?

       debug (default false).  Enable debugging messages.

       checkInterval (default 2000).  How frequently (in milliseconds) should
       we check to see who's run?  Defaults to 2 seconds which seems
       ``reasonable'' on my computer; shorten the interval if you want more
       frequent updates and have a faster computer (or are more tolerant than
       I am :-).

       shaped (default true). Allow lozenge control (see next).

       lozenge (default true). Make the lamp lava-lamp (lozenge) shaped using
       X11 shaped windows. Disabled if shaped is false.

       clicklessInfo (default false). If set, process information pops up
       without clicking. (Not yet fully working.)

       Q: The blobs are as jumpy as little rabbits, How do I make the
       animation smoother?

       A: Set the checkInterval resource to a smaller value.

       Q: I'm running LavaPS on my Timex Sinclair and it consumes a lot of
       CPU, making my editor ed run slowly.  How can I make LavaPS take less

       A: Set the checkInterval resource to a larger value.

       Q: Lozenge-shaped LavaPS is so cool, but I keep loosing it on my
       8000-pixel wide xinerama multi-screen display.  How can I resize
       lozenge-shaped LavaPS since it doesn't have any title bar?

       A: (1) Read your window manager documentation, most have ways to resize
       windows other than the title bar (sometimes using a menu).  (2) Set the
       geometry explicitly with the -geometry command-line option or the
       geometry resource.  (3) Put the title bar back (unfortunately loosing
       the lozenge shape) by setting the ``shaped'' resource to ``false''.

       · On Linux, LavaPS doesn't properly track the process names of
       processes that change at run-time (because it uses /proc/*/stat rather
       than /proc/*/cmdline). (Bug identified by Murray Smigel.)

       · Add a scaling factor to CPU speed. (Also make the default time-step
       proportional to CPU speed.)

       · (BUG) Autoconf of tcl is not very good. On some systems (Debian
       Linux, for example), all the tcl stuff has the version numbers
       appended. (Bug raised by many people.  Does someone want to try
       integrating the expect autoconf code?)

       · (BUG) Lozenge-shaped windows don't always properly draw the border.
       For people who understand borders, please look at the comment in and give me advice.

       · (BUG) Lozenge-shaped windows flicker for me on FocusIn/FocusOut
       events (with sawfish-0.36-7).

       · A --root option to run in the root window. (Unfortunately this isn't
       as simple as just using wish's -use.)

       · should have an option to label things with the hostname

       · window shrinks to zero on startup with tkstep installed

       · flag to force directionality

       · Show all processes but those by these uids (root, http, etc.). Also
       some way to exclude the (large) mfs image under FreeBSD.

       · set-able default scaling of blob size.

       · should verify that blobs can occupy the whole, whole screen.
       (Possible bug raised by Mark Yarvis.)

       · When things are resizing they should probably maintain some
       relationship between visual space and memory that is not affected by
       odd horizontal:vertical ratios.

       · pop-up sliders to adjust scaling.

       · LavaPS steals lots of colors on a pseudocolor display. I hoped that
       Tcl would do reasonable color mapping for me, but apparently not.

       · The info window should be pinnable (like in OpenLook), and then auto-

       · The Solaris port needs support for detecting command lines.

       · This should work as a Gnome panel applet. It works in Afterstep's
       panel, but not Gnome 1.1.

       · Finish clickelessInfo (it doesn't yet work). (Idea suggested by Yermo

       · Add a resource to control the directionality of blob movement.

       · Should allow LavaPS to show absolute memory usage, not just relative
       memory usage (suggested by several people including Johannes Nix).

       · Non-linear scaling of memory usage (to accommodate the wide range of
       process sizes).  Suggested by Johannes Nix.

       · Option to suppress mem grow/shrink messages. (Suggested by Jerrad

       · Background transparency. (Suggested by Jerrad Pierce.)

       · Configuration pop-up dialog. (Suggested by Jerrad Pierce.)

       · It would be nice if it looked like the lamp was actually filled with
       fluid and had a light down the bottom. So the background would be
       shaded with some color that followed a gradient of high intensity at
       the bottom to low intensity at the top, and this background gradient
       color would add the blob color of blobs that are floating in the
       background. (Suggested by Matth Lowry.)

       LavaPS was reviewed as app-of-the-week (see by Brett
       Neely of Linuxcare.


       Johan Walles's Bubbling Load Monitor provides a similar

       LavaPS is Copyright (C) 1998-2000 by John Heidemann.

       This program is free software; you can redistribute it and/or modify it
       under the terms of the GNU General Public License, version 2, as
       published by the Free Software Foundation.

       This program is distributed in the hope that it will be useful, but
       WITHOUT ANY WARRANTY; without even the implied warranty of
       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.

       John Heidemann, `'.

       The idea of doing a lava lamp arose in discussions with David Taylor at
       USC.  Although he didn't end up taking it on as directed research, the
       idea of a top-like lava lamp seemed too good not to follow-up on.

       Thanks to two enthusiastic early users (Ted Faber and Mark Yarvis) for
       encouragement, suggestions, and bits of code.

       LavaPS includes a small amount of code from xscreensaver by M. Dobie,
       Patrick J. Naughton, and Jamie Zawinski.  On Linux it uses Chuck
       Blake's /proc scanning library.  Building LavaPS uses tcl2cc by Ron
       Frederick, from tclcl (see for
       details).  Thanks to these authors for releasing their code to LavaPS.

       Johann Visagie, `', is the current maintainer of
       the FreeBSD port.

       Hubert Feyrer `', is the
       current maintainer of the NetBSD port.

3rd Berkeley Distribution         lavaps-1.20                        LAVAPS(1)