UNIX SIG By Christopher J. Fearnley FVWM: An Exciting New Window Manager for the X Windows System: A Review The F virtual window manager is a freely available window manager for X maintained by its original developer, Robert Nation, and a horde of "netizens". The README file gives a good overall description: "Fvwm is a just another window manager, which provides a simple virtual desktop, a 3-D look for window decorations, and shaped, color icons. It can be configured to use far less memory than twm [approximately 1/3 less] or to give a very good emulation of mwm. A nice button-bar can be used to provide convenient access to frequently used functions or programs." In order to keep fvwm small yet full-featured there are six add-on modules (nine in the latest beta release) which can be loaded from one's .fvwmrc file (there is a default system.fvwmrc file that is well-documented and easy to modify to suit your system and preferences) or with a mouse click or keyboard equivalent. Fvwm has been ported to many systems - basically it should work under any X11R5 system (or R4 with a few modifications to the Imakefile). Some of the add-on modules contain system specific routines which may affect portability. Pre-made binaries are available for Linux. The last public release of fvwm was March 10 (version 1.21c), but new releases are available weekly. The most recent beta version (at the time of this writing, April 23) is 1.21zo. There have been a flurry of bug fixes and releases lately in preparation for 1.22. It's time-consuming and mostly unnecessary to keep up with beta releases, but I wanted to include the latest information for PACS members (beware: new bugs are often released and the man pages aren't updated with each beta release). Fvwm is available by anonymous ftp from sunsite.unc.edu: /pub/Linux/X11/window-managers (latest released version), spcot.sanders.com: /pub/fvwm (where fvwm lives - alpha/beta releases) which is mirrored by shrug.org: /pub/fvwm. There is a mailing list for discussion of the development and use of fvwm. To subscribe send e-mail to majordomo@shrug.org with the body of the message consisting of "subscribe fvwm" and nothing else (it is moderately active with about 15 messages per day - Robert Nation announces important new beta releases here). For those who don't have ftp access, call me and I'll put it on my machine for you to download (my number is on the back cover of the Data Bus). I downloaded and built version 1.21zo in preparation for this article on my Linux-box with gcc 2.5.8. I had a problem with the Xpm (X PixMap) library (this allows storing and retrieving X pixmap files to and from files). Once I figured out where my Xpm libraries were located (/usr/X11/include/X11 on my XFree86 system - on your system it will probably be elsewhere) and put it in the configure.h file, there were no problems. In order to use the Xpm images that fvwm supports, you will need Xpm 3.3 which is located on sunsite.unc.edu: pub/Linux/libs. (Note: Xpm 3.4 has been released but is NOT backward compatible with Xpm 3.3 so you may need both depending on which applications your running - fvwm can use 3.3, I haven't tried 3.4 (motif cannot use 3.3)). Xpm is needed to use X pixmaps which are really neat icon-sized pictures). There are xpixmap editors available (try ftp.x.org). Fvwm can be built without support for Xpm. How to describe a 3-D virtual window manager in words alone? I don't know, but here goes! Fvwm provides a "viewport" into your virtual office (through either the built-in pager (now obsolete) or the FvwmPager Module). This viewport is divided into (typically 4) "desks". Each desk has (typically 4) virtual windows or "working areas". Only one such "working area" is active at any given time. Each working area can have as many windows open on it as you want. The FvwmPager module gives a complete picture of your whole virtual office (it names the desks that are available and puts the programs title on the pager representation of each window). A mouse click in the pager will move the pointer and the focus (the window which receives input) to the window in the "pile" of whichever desk you clicked. You can move an application to another virtual window or even another desk by dragging and dropping with the second mouse button. One can organize their desks around projects. The C development tools for some project might be on desk2 called "foo" where you might have a man page on your debugger opened, the project proposal in a text window, and another window for the current compilation. These could all be opened for you automatically and placed on the correct desk/window location from your .fvwmrc file. Moreover, each window's properties (like window decorations, starting location, icons to use, etc.,) can be specified in the .fvwmrc file with the built-in "Style" command. Style's are assigned by name of the program. FvwmPager lets us navigate through the viewport, now to discuss the other modules. The GoodStuff module provides an easy way to launch frequently needed applications with one mouse click (on a button). In the .fvwmrc file you tell GoodStuff which applications to make available, how to launch them (which parameters, location, etc), and how to decorate the button. FvwmWinList (written by Mike Finger) lists all the windows opened (anywhere) on buttons in a pop-up menu format; also, it can be fixed to some part of the display. Depressing the button will move the focus to that window (it can even be arranged to deiconify the window) even if it's on another desk. Each mouse button click can be bound to a different response: a fvwm built-in, module, or function (as specified in the .fvwmrc file). Another nice module is FvwmScroll which allows one to add Athena scroll bars to any window. FvwmBanner can be launched at startup or with a mouse or keyboard invocation. It displays a banner for fvwm and then exits after five seconds. FvwmClean can iconify or even kill applications that have been left running for more than X seconds (you fill X in in the .fvwmrc file, of course). FvwmIdent identifies many of the properties of the window you ask it about. This can be useful in trying to get the right geometry loaded into your initialization files. FvwmSave saves to a file "new.xinitrc" candidate lines for your .xinitrc based on the window geometry on the display when it is invoked. You must edit the new.xinitrc file (or suffer the consequences). xpmroot is a program that will set the root window of the display to whatever Xpm pixmap file you indicate. Finally, there is a module FvwmDebug which "captures the stream of module packets coming from fvwm, and displays them on stderr" according to the man page, but I saw no real use for it. CONCLUSIONS: Fvwm is a very powerful, full-featured window manager for X. It is highly configurable, fast, has color, a 3-D look, and is easy to build. Development is proceeding rapidly, too rapidly in fact. The only real complaint I have is that I spend too much time tweeking my .fvwmrc file! Mwm (the Motif window manager) is the main "competition" to fvwm. Motif's advantage is that it is commercial. So, presumably, one can get help and assurance that it will work on your X system. Many people on the mailing list have switched from mwm to fvwm. They complain of some of the stupid ways mwm does certain things. It seems that unless you need corporate support fvwm is better. The last straw is that fvwm can emulate mwm. So if you like a few mwm features, you can pick and choose mwm and fvwm features according to your preference. NEXT MONTH: We will continue our discussion "Introduction to Perl" with Gordon Fink, examples from other PACS members. Discussion will be our focus.