I use 5 different window managers stacked on top of each other
I am still on X11 because I haven’t yet found the right wayland setup for me. In this process, I had to take a good look at my current X11 setup. I was surprised what I found.
My current setup
I usually have all windows maximized, so only a single window is
visible at a time. (I also only have a single screen.) If I want to move
a window across the screen I usually use shortcuts:
Alt-Right to restrict the window
to one half of the screen,
Alt-Down to turn it into a
decorated floating window, or
Alt-Up to maximize it
Alt-Tab to switch between windows. The windows are
ordered in last-recently-used order because I most often switch back and
forth between a few windows while ignoring the rest.
Still, sometimes there are too many windows to easily navigate them.
For that reason I have three virtual desktops: I usually work on the one
in the center, but can easily move windows to the other desktops using
Alt-Ctrl-Right get me to
Usually at least a web browser and a terminal are running. The web
browser has tabs which I can navigate with
Ctrl-PageDown. I can open a new tab using
Ctrl-t and close it again with
Ctrl-Shift-t opens the last recently closed tab, which
sometimes is useful.
The terminal also has tabs which can also be navigated with
Ctrl-PageDown. A new tab is
Ctrl-Shift-t and closed with
Inside the terminal I use vim, which in turn also has tabs. These
tabs can be navigated using
Ctrl-Alt-PageDown. A new tab is created using
:tabnew and closed with
How common is this?
I believe this is not too exotic. I pretty much stayed with the
defaults and the shortcuts like
Alt-F4 haven’t really changed since I started using
Having multiple virtual desktops is a bit special. This didn’t exist when I was still using windows and when I started using linux with gnome 2 I believe it defaulted to a 2x2 grid. I am pretty happy with my current 3x1 grid and would like to keep it.
Another aspect that is a bit unusual is the fact that I maximize all windows by default as well as the related shortcuts to position windows on the screen. The shortcuts feel very intuitive and I would also like to keep those. The major issue with maximize-by-default is that dialogs should actuall not be maximized, and window managers often have a hard time telling them apart. I am sure most people who use tiling window managers can relate.
What was shocking to me about this analysis was how inconsistent this
all was. Not just are there 5 different window managers, they all use
different shortcuts. For example, browser and terminal use the same keys
for navigating tabs, but slightly different ones for opening and
closing. And the fact that vim uses
Ctrl-Alt as a modifier,
which is otherwise related to desktop operations, also feels out of
The purist in me wants to eleminate some of those levels. For example, instead of using terminal tabs I could open several terminals. I could also eleminate the virtual desktops. However, that would only work if navigation on the window level worked really well.
I guess window managers like i3 put windows in a tree for exactly that reason. You still get a hierarchy, but a much cleaner one: The shortcuts are the same on every level, and you can just add another level when required. The downside is that the shortcuts alone do not imply the level, so you have to explicitly navigate the hierarchy.
But then all of my levels also have their custom bits and pieces. When I open a new terminal tab, it opens in the same directory as the one I opened it from. When I use autocompletion in vim, it completes words from all open tabs. In the browser, I can re-open the last recently closed tab. By forcing all these levels into a single window manager I would loose those small but important features.
One downside I definitely see in my current approach is that it
requires a lot of different keys.
PageDown are not easy to reach on many keyboards.
Fortunately, with both my private laptop and work laptop they are easy
to reach. Unfortunately, they are positioned in different places on
those two devices, so I constantly have to readjust. Also, the heavy use
of modifier keys makes it hard to use these shortcuts with a single
hand, which might become an accessibility concern.
Why not use tiling?
Displaying two windows side by side works on a stacking window managers, but it also has its flaws:
- When I switch to a maximized window and then want to go back to the side-by-side view, I have to raise both windows.
- It is not always clear which of the two windows has focus.
- The approach is quite limited.
Tiling window managers could provide more flexibility here. For maximized and floating windows, a tiling window manager would work exactly like a stacking one, so the side-by-side case is really the only difference.
My biggest issue with tiling window managers is that they just come
from a different lineage. For example, an
last-recently-used order is not at all common there.
Tiling window managers might have benefits for my use case, but so far there was no compelling reason to switch.
I took a good look at my window management setup and found that is messy, but sticks with defaults and works well.
Now the challange is to find a wayland compositor that can replicate that system.