Ξ

I use 5 different window managers stacked on top of each other

Published on 2022-12-03 linux design wayland

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-Left and 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 again.

I use 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-Shift-Left and Alt-Shift-Right. Alt-Ctrl-Left and Alt-Ctrl-Right get me to those desktops.

Usually at least a web browser and a terminal are running. The web browser has tabs which I can navigate with Ctrl-PageUp and Ctrl-PageDown. I can open a new tab using Ctrl-t and close it again with Ctrl-w. 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-PageUp and Ctrl-PageDown. A new tab is created using Ctrl-Shift-t and closed with Ctrl-d.

Inside the terminal I use vim, which in turn also has tabs. These tabs can be navigated using Ctrl-Alt-PageUp and Ctrl-Alt-PageDown. A new tab is created using :tabnew and closed with :wq.

In summary:

create close navigation
desktop - - Ctrl-Alt-Left|Right
window misc Alt-F4 Alt-Tab
browser Ctrl-t Ctrl-w Ctrl-PageUp|PageDown
terminal Ctrl-Shift-t Ctrl-d Ctrl-PageUp|PageDown
vim :tabnew :wq Ctrl-Alt-PageUp|PageDown

How common is this?

I believe this is not too exotic. I pretty much stayed with the defaults and the shortcuts like Alt-Tab or Alt-F4 haven’t really changed since I started using computers.

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.

Consistency

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 place.

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.

Keyboard usability

One downside I definitely see in my current approach is that it requires a lot of different keys. PageUp and 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:

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 Alt-Tab in 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.

Conclusion

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.