Originally Posted by GazL
I'm curious. What does fvwm do that can't be done by configuring any of the *boxes?
(None of the following may sound especially vital to some folks but these just illustrate a general configurability that applies to most everything.)
For some examples, it has a very precise focusing model - I can focus on mouse hover and raise on click but not raise on drag-to-copy clicks. It has a very precise window placement model that I can't replicate anywhere else - e.g., the openbox guys in #openbox acknowledged openbox couldn't do it and that one of their goals was to improve there, where it does a smart placement called 'MinOverlapPercentPlacement' as one of many possibilities. It can do remarkable things with functions and positioning things down to the pixel, such as
# EWMHBaseStruts doesn't apply to this (or the corner snaps), so I need a
# pixel border here.
+ I Raise
+ I Current (!HasPointer) WarpToWindow 100 100
+ I ThisWindow Piperead "echo Move $(( $[vp.width]/2-$[w.width]/2 ))p -1p Warp"
The '-1p' in the arithmetic expansion puts a raised window 1 pixel above the bottom center of my display and snaps the mouse to the bottom right corner if it wasn't already in the window area. (Don't worry - this sort of thing is rarely necessary if you don't want to be bothered with this sort of precision.)
For even more over-the-top things, I can position how far to the left or right from the parent menu a child menu opens. I can set the text and color and size of tooltips in the pager if there are any tooltips at all. You can choose if you want an 'alt-tab' sort of menu but can pick which button to bind it to, pick which apps are shown, pick what data is displayed with them (such as geometry and desk), and define a max width to the whole menu/widget. Etc. It's just very nearly infinitely configurable.
Also, some people go way out with using its ability to read arbitrary scripts or use arbitrary programs (Read, PipeRead configuration commands, etc.) to create pseudo-real-time thumbnails for their desktop (I use no desktop icons at all on my primary config) and create menus containing weather reports (sort of like conky-in-a-menu) and so on. The possibilities are nearly endless.
-- Oh, and I forgot to mention that you can use m4 or cpp as a preprocessor to your configuration, creating a sort of conditional compilation of your config. So, for instance, you could use the same config to create two very different configs based on whether you were on your desktop or your laptop or whatever.