What I want out of my window manager
One answer to what I want out of my window manager is 'fvwm'. It's my current window manager and I'm not likely to switch to anything else because I'm perfectly satisfied with it. But that's not a good answer, because fvwm has a lot of features and I'm not using them all. As with everyone who uses a highly customizable thing, my important subset of fvwm is probably not quite the same as anyone else's important subset of it.
(I'm thinking about what I want out of my window manager because Wayland is coming someday, and that means I'm almost certainly going to need a new window manager at some time in, say, the next ten years.)
I can't tell for sure what's important to me, because I'm sort of a fish in water when it comes to fvwm and my fvwm configuration; I've been using it exclusively for so long that I'm not certain what I'd really miss if I moved and what's unusual. With that said, I think that the (somewhat) unusual features that I want go like this (on top of a straightforward 'floating layout' window manager):
- Something like FvwmIconMan, which
is central to how I manage terminal windows (which I tend to have a
- The ability to iconify windows to icons on the root window and then
place those icons in specific locations where they'll stay. I
also want to be able to record the location of those icons and
reposition them back, because I do that. Putting iconified windows
in specific places is how I currently manage my plethora of Firefox
windows, including keeping track of what I'm going to read soon.
As usual, icons need to have both an icon and a little title string.
(Perhaps I should figure out a better way to handle Firefox windows, one that involves less clutter. I have some thoughts there, although that's for another entry. But even with Firefox handled, there are various other windows I keep around in iconified form.)
- Multiple virtual desktops or screens, with some sort of pager to
show me a schematic view of what is on what screen or desktop and
to let me switch between them by the mouse. I also need key
bindings to flip around between screens. It has to be possible
to easily move windows (in normal or iconified form) from screen
to screen, including from the command line, and I should be able
to set it so that some icons or windows are always present (ie,
they float from screen to screen).
- Window title bars that can be either present or absent, because
some of my windows have them and some don't. I'd like the ability to customize
what buttons a window titlebar has and what they do, but it's not
really important; I could live with everything with a titlebar
having a standard set.
- User-defined menus that can be brought up with a wide variety of
keys, because I have a lot of menus that are bound to a lot of
different keys. My fvwm menus are one of my two major ways of
launching programs, and I count on having a lot of different key
bindings to make them accessible without having to go through
multiple menu levels.
- User-defined key bindings, including key bindings that still work when the keyboard focus is on a window. Key bindings need to be able to invoke both window manager functions (like raising and lowering windows) and to run user programs, especially dmenu.
- User-defined bindings for mouse buttons, because I use a bunch of
- Minimal or no clutter apart from things that I specifically want. I
don't want the window manager insisting that certain interface
elements must exist, such as a taskbar.
- What fvwm calls 'focus follows mouse', where the keyboard focus is on the last window the mouse was in even if the mouse is then moved out to be over the root window. I don't want click to focus for various reasons and I now find strict mouse focus to be too limiting.
Fvwm allows me great power over customizing the fonts used, the exact width of window borders, and so on, but for the most part it's not something I care deeply about if the window manager does a competent job and makes good choices in general. It's convenient if the window manager has a command interface for testing and applying small configuration changes, like FvwmConsole; restarting the window manager when you have a lot of windows is kind of a pain.
(As you might guess from my priorities, my fvwm configuration file is almost entirely menu configurations, key and mouse button bindings, and making FvwmIconMan and fvwm's pager work right. I have in the past tried tricky things, but at this point I'm no longer really using any of them. All of my vaguely recent changes have been around keyboard bindings for things like moving windows and changing sound volume.)
Sidebar: Fvwm's virtual screens versus virtual desktops
Fvwm has both virtual screens and virtual desktops, and draws a distinction between them that is covered in the relevant section of its manpage. I use fvwm's virtual screens but not its desktops, and in practice I treat every virtual screen as a separate thing. It can sometimes be convenient that a window can spill over from virtual screen to virtual screen, since it often gives me a way of grabbing the corner of an extra-large window. On the other hand, it's also irritating when a window winds up protruding into another virtual screen.
All of this is leading up to saying that I wouldn't particularly object to a window manager that had only what fvwm would call virtual desktops, without virtual screens. This is good because I think that most modern window managers have adopted that model for their virtual things.