My Ideal Window Manager

Posted

My Use Case

I’ve been a GNOME user for a long time. A lot of people will make fun of GNOME for being relatively heavy weight and lacking any power-user features. That may be true but I find that GNOME 3 has a nice simplicity to it and it does what I need. The main features I use are <Super> to open the menu to search (I don’t use anything else in the menu), <Super-Up> to maximize a window <Super-Left> or <Super-Right> to move a window to half a screen and a couple of shortcuts for moving windows between workspaces and monitors.

One interesting observation about my workflow is that I use workspaces, but I rarely explicitly switch instead I use <Alt-Tab> to select the window I want to focus on and let that pull me to the correct workspace. I also use most apps maximized, however there are a few apps that I use side-by-side, like my editor and a terminal or a web browser and my character sheet.

When I mention my workflow people quickly suggest a tiling window manager, however that isn’t what I want. When you open a new window most tiling window managers will put it in a portion of the screen, and squish or rotate other windows. Instead I want new windows to open maximized by default, only tiling if I explicitly request it.

My Idea

I would like a window manage that behaves like this:

  1. New windows open maximized. They take up all of the active monitor.
  2. I have a shortcut to attach another window to the side of this window in a form of tiling.
    • From now own these windows are “joined” and switching to one will bring the whole group to the screen.
    • The shortcut can be repeated to attach more windows. This would give you arbitrarily complex layouts for a group.
    • I can imagine the shortcuts being <Super-h> to join a new window to the left side, <Super-l> to the right <Super-j> to the bottom and <Super-k> to the top.

It is a pretty simple concept, but I think you can see that it is fairly powerful. Once you start a group you get the powers of a tiling window manager but it changes the default to be maximized instead of joining the group.

Isn’t this Just Workspaces?

They are similar, and I use workspaces to approximate this flow but there are a couple big differences.

I think this would work really well for my use case. It is probably possible to configure one of the more flexible window managers to work like this but haven’t found the time yet. Is there a window manager that works like this already? I would be interested in trying it out.