posted by Tavis Ormandy on Mon 21st Feb 2005 10:53 UTC

"FVWM, Page 3/3"
Fvwm allows you to construct functions and access them just as you would any other command, once defined they can be used in keybindings, menus, or even in other functions. This example will Minimise all the xterms on your screen, then start a new one and Maximize it.

AddToFunc NewXterm
+ I All (XTerm, CurrentPage, !Iconic) Iconify on
+ I Exec xterm
+ I Wait XTerm
+ I Next (XTerm) Maximize

Command Substitution

Using command substitution and pipelines to build commands is an integral part of using the shell, you simply take the output of one command and use it to form another. Here's a simple example of using substitution in a standard shell, the output from one command is used to form the next.

bash$ echo This is $(hostname)
This is insomniac

The same thing would not be possible in flush, you would have to do this manually:

flush$ hostname
flush$ echo This is insomniac
This is insomniac

Imagine closing all windows with the same name as the window that has focus in your window manager, how would you accomplish this? Most likely the same way you would in flush, manually identify all the matching windows then close them in turn. Fvwm supports substitution in several forms, expansion is perfect for this operation:

Current All ($[]) Close

Fvwm expands the string $[] to the name of the current window, fvwm supports many types of expansion, such as $[], $[w.iconname], $[w.x], $[w.y], $[w.width], $[w.height], $[pointer.x], $[pointer.y], and dozens more. Another form of substitution that can be very useful is PipeRead, fvwm will read commands from the output of shell commands, this allows you to create complex commands using shell constructs.


Fvwm has so many advanced features that several tomes could be filled on the subject, yet the modular design and high quality codebase make it one of the most efficient window managers available. There is no way for me to describe all the features here, but if you've read this far you might be interested to know that fvwm includes a scripting language called FvwmScript for building simple graphical programs that integrate with fvwm, a powerful module for building interfaces or desktop panels called FvwmButtons, and a perl library called perllib that lets developers create fvwm modules in perl.

  • You can read some more about FvwmButtons here and here
  • There's an introduction to fvwm here
  • The official fvwm site is here
  • The FvwmWiki is here, and the FvwmForum is here
About the author
Tavis Ormandy has been a confirmed fvwm zealot for many years, advocating it to anyone who will listen. He maintains the fvwm package for Gentoo Linux where he also helps with alpha porting and security auditing. He can be found idling on #fvwm on You can find his fvwm2rc here.
If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.
Table of contents
  1. "Flush, Page 1/3"
  2. "FVWM, Page 2/3"
  3. "FVWM, Page 3/3"
e p (0)    63 Comment(s)

Technology White Papers

See More