According to Wikipedia on FVWM, the F in FVWM doesn't stand for anything, but the VWM stands for Virtual Window Manager. FVWM is a light weight window manager that despite its meager resource requirements, provides an incredible amount of utility. A rather complete list of features can be found at fvwm.org.
However, I'll list a few of the features here that I think make FVWM stand out from its competition at the light weight end of the window manager spectrum.
Some features of FVWM that I found handy and easy to set up:
# Ability to load background images using any of a number of utilities. I use fbsetbg.
# Ability to have a task button bar -- in any screen location, vertical or horizontal, one row (column) or more. Most light weight managers have no direct support for icon buttons. For them the feature must be added with some additional utility.
# In Debian Linux, ability to have a menu category that automatically tracks all loaded (or removed) programs.
# Ability to allow custom shortcut keys for screen controls and even launching programs.
# Ability to allow custom mouse control of window functions.
In Debian Linux, installing FVWM is as easy as doing the following command as root:
Then either edit your .xinitrc file to run FVWM on the next startup, or logout of your current window manager and select FVWM for your next login.
That first login, by the way, may look pretty disappointing. In my Debian it was just a black gray screen. But a left-mouse click brought up a menu, and one item was click to build a win95 style setup. I clicked that, answered a couple of questions (defaulted most), and then FVWM restarted with a vertical icon button bar along the right side of the screen. From there I started making a few edits to get to the style I wanted.
|What you see at left is a screen shot of a typical, easy to obtain, FVWM screen layout. |
Click on the image for a full display.
The background image on the screen, by the way, is a photo I took of the Plato region of the moon. You can see that and more of my lunar photos at Six Inch Newtonian Moon Photos.
I think a number of things should be pointed out here that I've not seen in other reviews.
|For example, at left is a section of the task button bar and task panel that in my configuration appear at the bottom of the screen. I use the fvwm95 variation of FVWM, which is only a set of normal FVWM commands that configure FVWM to resemble a Windows layout.|
The bottom task panel also shows all user tasks currently running, and a click on a panel task label will bring the user to that task.
In addition, notice the task buttons just above the task panel. Particularly notice the 4th one from the left. As you can see, it is actually two buttons in one. This trick is an easy configuration option, and as many mini-buttons as you might wish can be packed within the size of a normal button. I might point out that the default installation has gray buttons, but as you can see, more colorful buttons can easily be created.
Not so obvious is the www button on the task button bar. On my Debian linux system that button launches seamonkey on a left-mouse button click. But the button is more than it seems. With a right-mouse click it will launch iceweasel, and with a middle-mouse click it will launch opera. Any or all buttons can be configured to launch different applications with different mouse buttons.
|This is another full size view of the right end of my task button panel. It shows the FVWM Virtual Desktop panel. |
As you can see, it shows 4 virtual desktops, and gives a visual depiction of what's running on each one. Four desktops is just the default. You can have as many as you like. You might also notice the digital clock on the task panel.
Adding Your Own Buttons To The Button Bar.
Note, if you use the Debian Linux system, you may have to manually edit the .fvwm/menus command as described later in this page to get the menu edit commands to work.
The default install of FVWM will have a few buttons already in the button bar. In the fvwm95 option that I chose, the default buttons were in two columns on the right side of the page.
I wanted to remove some of the default buttons and add some of my own. But first, I wanted to have a horizontal button bar instead of a vertical one. The buttons are stored in a file called modules, and it can be reached from the edit menu as shown near the end of this page. All the setup files can also be accessed directly in your home directory's .fvwm directory.
Near the top of the modules file are parameters that set the location and orientation of the button bar. The initial ones were:
| *BarButtons: Geometry -0+5|
# Layout: specify rows or columns, not both
*BarButtons: Columns 2
To get a one row set of buttons at the bottom of the screen, I made the following changes, using the sharp symbol to comment out the original parameter lines:
| #*BarButtons: Geometry -0+5|
*BarButtons: Geometry +0-30
# Layout: specify rows or columns, not both
#*BarButtons: Columns 2
*BarButtons: Rows 2
The above image, as shown previously, is the leftmost buttons in my button bar. The following parameters in the modules file define the terminal button, the dual MC and Thunar button, and the www button:
| *BarButtons: (1x2, Title terminal, Icon rterm2.xpm, Action 'Exec exec xterm')|
*BarButtons: (1x2, Padding 0 0, Container(Padding 0 0, Frame 2, Columns 1))
*BarButtons: (1x2, Title MC, Icon mini.filemgr.xpm, Action 'Exec exec /home/bat/runMc')
*BarButtons: (1x2, Title Thunar, Icon mini.filemgr.xpm, Action 'Exec exec thunar')
*BarButtons: (1x2, Title www, Icon seamonkey.png, Action 'Exec exec /usr/local/seamonkey/seamonkey', \
Action (mouse 2) 'Exec exec opera', \
Action (mouse 3) 'Exec exec iceweasel')
The dual button starts with a Container command, defining the number of rows (frames) and columns in the button sized container. Then follows the same nomenclature for the regular button commands to add the button labels, icons, and actions. The container is closed with the (End) command.
Then next parameter defines a button to launch seamonkey, but notice the comma backslash at the end of the line instead of a closing parenthesis. That's used to allow continuation of the button's definition. The following two lines add an opera action for the middle-click of the mouse (mouse 2) and an iceweasel action for right-click of the mouse (mouse 3).
That's about all I know about buttons, and I got that from just looking at the default modules file parameters. I'm sure you can easily do the same.
One reason I've settled on FVWM as my main window manager is that it had a default configuration that was already very close to what I wanted. The key and mouse controls of the windows are very handy, the task panel is very useful, and I wanted a light system, but one that I could have some icons for launching commonly used applications.
But there were some things I wanted in addition. For example, I do a lot of work at the keyboard, and there are some things I really accomplish without reaching for the mouse. One thing is moving between virtual desktops.
The default configuration of FVWM already gives a way to do that. Holding down the shift key while using the cursor keys will move you left and right or up and down between virtual desktops. But I wanted something more direct, yet with easy to reach keys.
The key and mouse commands are all in a file called bindings (also in your home directory's .fvwm directory). By editing that file, you can add more functions, or adjust ones that already exist. The following lines are what I added to let me go directly to any of the 4 virtual desktops with just an alt key and a number key: 1, 2, 3, or 4 for virtual desktop 1, 2, 3, or 4.
| Key 1 A M Gotopage 0 0 |
Key 2 A M Gotopage 1 0
Key 3 A M Gotopage 0 1
Key 4 A M Gotopage 1 1
| Key x A M Exec exec xterm -sb|
You betcha! The following entries in the bindings file turned on that feature:
| Mouse 5 R A Scroll -100000 0|
Mouse 4 R A Scroll 100000 0
| Key n A M Next [CurrentPage] Focus|
Key p A M Prev [CurrentPage] Focus
|How do you quickly try out your fixes? Just left click anywhere in the root screen to bring up this menu. Then, click on the Restart selection. This will cause FVWM to re-read it's config files, taking into account your new bindings.|
By the way, you can edit the menus file and add entries of your own. I happen to use the Debian Linux distribution. In Debian Linux, the Programs menu selection lists all of the installed user programs.
As one installs others (with apt-get, aptitude, whatever), they're automatically be listed after a Restart. Of course, removed ones will also be removed from the menu.
Alas -- There are a couple of problems with Debian menus, in at least the Etch and Lenny distributions.
One is that the Programs selection initially doesn't work right.
The reason is that the menus file is supposed to refer to a file kept up to date by the package management system, but the FVWM install default menu refers to the wrong file.
It's easily fixed. Look for the menu file name in /etc/X11/fvwm, and make sure that the .fvwm/menus file in your home directory refers to that file.
Do a Restart and things should work fine. Be sure to fix every reference to the Debian updated menu file in menus, there's more than one. In my system, the file in /etc/X11/fvwm is menudefs.hook
|Another potential problem with the fvwm menu in the Debian Etch and Lenny distributions is with this sub menu, obtained by selecting settings on the main menu, then edit .fvwm2rc on the subsequent sub menu. |
That will bring you to this sub menu. It's supposed to let you easily select and edit any of the common FVWM configuration files.
Depending upon what you selected when you did the win95 setup, it might or might not.
The key is which editor you selected on the win95 setup menu.
Pick one that is installed, and opens up it's own window.
I mistakenly selected vim as my editor, and later the edit menus wouldn't work.
This little review and tutorial is by no means exhaustive. By learning all the intricacies of the many FVWM menu parameters, you can make your window manager look any way you wish, and do anything you want. The things presented here are just the few that I found useful in tweaking FVWM more to my liking. Hopefully they will give you a head start should you decide to FVWM a look.