FVWM is an extremely customizable window manager, many would say it is pathologically customizable. It is also very extensible, lightweight, and fast. It is not for the non-technical. It is for those who know what they want and want the freedom to implement it. It can be as ugly and functional or as beautiful and full of gee-whiz embellishments as you like. The limits are your imagination and your skill.
There are 3rd party projects to provide automatic configuration and themes (fvwm-themes and fvwm-crystal). FVWM itself provides a default configuration file generator, in which certain options can be chosen. The expectation, however, is that you want a configuration of your very own, and you can use these tools and others' configs as a starting point (further explanation).
FVWM is easily installed into Ubuntu, as there is an fvwm package in the repositories. There are additional packages like fvwm-themes, which is a collection of canned FVWM configurations for those who want something that works right away.
FVWM is an active project. Updates with bug fixes and new features are fairly frequent. Currently, FVWM maintains two states: a stable release (versions 2.4.X) and an unstable release (2.5.X). The unstable branch is the one that will eventually form the new stable set (and hence will evolve to 2.6.X as stable, and 2.7.X as being unstable). Given that the FVWM stable branch is quite old, a lot of the more "established" actions one would expect from a window manager is really only in the unstable branch at the moment. Not that "unstable" really means that it crashes every five minutes; it's just an indication that the branch is subject to development and change. Unless there's a very good reason (unlikely) then the 2.5.X branch is the one that should be used, as many people tailor their configs to use it, and usually give no consideration to FVWM 2.4.X.
Prerequisite packages are build-essential, xorg-dev, fakeroot (for making the .deb), and debhelper (also for making the .deb). Some other small packages that generally everyone will want are libpng-dev (so .png images can be used for icons) and libreadline-dev (which makes FvwmConsole more pleasant).
Download the tarball, extract it, and configure as usual. Instead of a simple make, do make deb-inplace to create a .deb, and then install it with dpkg.
If you install from apt, then FVWM is already in GDM's list of sessions.
If you install from source, you will have to choose "Default X session". You will also have to make a .xsession file. The simplest .xsession file simply contains the line "fvwm". .xsession is simply a shell script that is run when you log in from GDM. If there are any programs that you need to start before fvwm, put them in .xsession before "fvwm". It is also wise to make a .xinitrc that is a symlink to .xsession, so that fvwm starts up when you log in from the console. As an example, your ~/.xsesssion file might look like the following:
# Various other commands here, ensuring that they're backgrounded where necessary # i.e.: # # foo & # Start FVWM exec fvwm
Symlinking the above to ~/.xinitrc can be done as follows:
ln -s ~/.xsession ~/.xinitrc
You can have a menu of most installed applications with Debian's menu system. Install the menu package
sudo apt-get install menu
Then, to your ~/.fvwm/config add
Now you have access to a menu of installed programs, automatically categorized and updated. You can access this menu with the FVWM commands
There are reports of FVWM not working well under Xgl. This will be corrected when the users complain loudly enough, or someone submits a patch. FVWM works reasonably well with xcompmgr and the composite extension. If you use xcompmgr:
Do not give icons titles:
Style * !IconTitle
Restart FVWM after starting or stopping xcompmgr:
# xcompmgr is finally pretty stable, but occasionally it gets screwy or dies # FVWM must be restarted after xcompmgr, otherwise edges don't work DestroyFunc RestartXCompMgr AddToFunc RestartXCompMgr + I PipeRead 'killall xcompmgr && exec xcompmgr -n & echo Restart'