Alternatives to FVWM window manager

software-recwindow-managerx11

I've been using FVWM for over a decade, and for some time I've been concerned that the window manager is dying a slow death. I realize that 2.6.0 just came out a few days ago, and ironically that is what reminded me to look into a replacement – while a new stable version is good, it took so long (4 years between 2.4.20 and 2.6.0, and 2 years between 2.4.19 and 2.4.20) that I'm still unconfident in FVWM's future.

Thus, I'm wondering if there is a more modern window manager which has the following properties (these are the key things I like about FVWM and would like to keep):

  1. Focus-follows-mouse without auto-raise. I.e., if I drag the mouse into a window which is partially obscured, that window gains focus but does not come to the front.

  2. Multiple virtual desktops that I can switch between with the keyboard and that I can move windows between.

  3. Modifier key + mouse window manipulation that can be configured to the following:

    • left click + alt + shift = send to back if frontmost, otherwise raise to front
    • right click + alt + shift = maximize window vertically (horizontal size unchanged)
    • middle click + alt + shift = grab window and move it
    • middle chord + alt + control + shift = resize (drag pointer to side or corner and move that side or corner)

For all of these, "click" means click anywhere in the window, not just the frame. The move/resize operations should begin on mouse-down and end on mouse-up.

I don't use any desktop environment, just plain X11.

Best Answer

I think fvwm can do all that, it's pretty configurable in the relevant respects. Did you have trouble convincing it to do your bidding?

I used to use fvwm, but eventually switched to sawfish, because I wanted better programmable hooks. (Back when I last used fvwm, it was technically Turing-complete, but only through the PipeRead command, and didn't have hooks in the right place.) Sawfish is built like Emacs, with a Lisp surface over a compiled core. It supports multiple desktops out of the box. Everything you ask for either works by setting a few options or can be implemented in a few lines of code.