Skip to main content

Friendship with Tiling Window Managers has ended!

Last week I wrote about how I decided to accept Xah Lee's challenge on Tiling Window Managers. After using his workflow for a week I admit it: he won. But let me first explain why.

The problem

I've been using Tiling Window Managers for about 3 years now. In that time I have visited floating window managers but always gave up and went back to BSPWM or DWM. Lately, however, I have experienced a "discomfort" so to speak with Tiling Window Managers and I started to question having so many windows open at the same time.

The great advantage of tiling compared to normal floating managers is that the windows are automatically arranged in a grid or layout so that you always see all windows occupying as much space as possible. The available layouts are very varied but most are based on a "master" area and a "stack" area; the master area takes up more than half of the space and contains only one window while the stack is on the other side and the windows are placed on top of each other.

Although this scheme is praised by many as super efficient it has a big problem: when you open more than 3 windows, the stack becomes ridiculous, the windows become too small to interact with. Some argue that the purpose of the stack is not to interact with it, but to have the windows on standby and when you occupy them move them to the master area, wouldn't it be better to minimize them?

Manual managers seem to solve this problem and for quite a while I fell in love with herbstluftwm and i3wm as they allow me to arrange the windows where I want and the grid is created on the fly. But again, I found that there comes a moment where the windows become too small. I tried to solve this by using tabs, but when hiding windows one after the other the initial question came back, do I need to see all windows at the same time?

What about virtual desktops? Actually, I used them for two things: to hide windows I didn't want to see, and to keep opening windows when a desktop became full. This second use represents a very common problem, which is that of missing windows. You constantly open a new terminal because you don't have any, only to realize that you had 4 terminals open on other desktops, or, you don't know where you left that terminal that was compiling.

While I was analyzing all these situations was that Xah Lee's blog appeared among my searches (I had already read it in the past) and I decided to give it a try. Again, it is not the first time I use floating windows, but it is true that Lee proposes certain changes that I had never tried, indeed, that I had rejected.

The challenge

The challenge consists of:

  • Remove the Tiling Window Manager. Use a normal one (I decided to use Plasma 5.22)
  • Configure only 1 virtual desktop
  • Set up 3 function keys to switch to your 3 favorite apps.
  • Set up a key to switch to the last window.
  • Set a key to cycle windows of the same app.
  • Configure a key to maximize.
  • Configure a key to close windows.
  • Activate the option to focus and raise windows by hovering with the mouse.
  • Eliminate the double-click.

The main features of the proposed workflow are:

  • Use only one key instead of key combinations.
  • Focus windows only by moving the cursor over them.
  • Use the mouse when it makes sense to use it. So, after configuring Plasma as Lee requests I've been using this workflow for a week now and…. it's pretty good! I don't feel less efficient except maybe for the part of learning new keyboard shortcuts. Using only one key to move between applications is especially comfortable, but I don't think it was only Xah Lee's proposal that caught me, but some concessions I personally took to solve certain problems that the challenge has. Let's start by mentioning those problems.

The problems of the proposed challenge

Everything was going smoothly on the first day, until I discovered that the function keys have many more uses than it seems in many applications. Almost every application uses all 12 function keys for something and they end up conflicting. For example, I had set F4 to cycle between windows, but that same key is used by the file manager to open the terminal. Of course I can change the shortcuts for each window, but it would be a gargantuan task to change, if they allow it, every application I have installed. And no, getting more function keys is not an option, because although I can use my mechanical keyboard and create more function keys, when I use the laptop keyboard I won't be able to do anything.

The second problem lies in the workflow itself, as the movement between windows is based on one key to switch to the previous window and another to switch to the previous window of the same application. Eliminating ALT+TAB (and its behavior of pressing TAB several times to move in a list whose order changes from time to time) is wonderful, but limiting myself to just the previous application means that if I need to focus on a third window, I need to "dig it out" among all the windows or use the taskbar at the top. Both rather inefficient options if I'm at the keyboard at that very moment.

Finally, using a key to open or focus the most used windows doesn't end up clicking for me. Because I like to have several instances of the same application (for example 2 different terminals instead of using termux or tabs) every time I wanted to launch a new instance I ended up focusing on the window I already had open. That added to the problem of the function keys makes this mechanism very unhelpful for me.

"Fixing" the workflow, or cheating

After a couple of days of forcing myself to suffer with the above I decided to make some concessions. First of all I decided to use key combinations using the SUPER key. I tried to minimize them as much as possible, and I only have a couple of combinations to open emacs, the terminal and krunner. I managed to accommodate other things like maximizing or switching between windows to rarely used function keys like F9, F8 and F11. But my biggest accomplishment, I think, is starting to consistently use the Expose Windows function.

For those who don't know it, this Plasma feature is very similar to OSX's exposé and GNOME 40's "Activities" screen, where you can see all windows at once and, of course, filter windows by name to choose the one I want. This feature was a game changer for me and is what, I think, has allowed me to feel useful with floating window management. Basically, I press F8 and all the windows are arranged side by side, if I have my hands on the keyboard, I can start typing the name of the application I want until I filter it and press Enter to focus it, or if I have my hand on the mouse I can just click to focus the window I want. This method is superior to ALT+TAB as it allows me to view all the applications at once and choose the one I am interested in, and superior to a list as offered by programs like rofi because I can see the contents of the windows and choose more safely the window I am interested in.

This last feature, Expose windows, is super useful and I suggest everyone who is not using it to go and activate it in their window manager. Personally, I can no longer use my computer without that feature, which oddly enough I always wanted to emulate in my Tiling Window Managers to avoid losing windows.

/expose.png

So, tiling window managers sucks?

Of course not, they're awesome! I have my eye on river, herbstluftwm and bismuth, to name a few. But the truth is that I no longer see them as a panacea for productivity. Sure, they're fun to set up and use, but I don't see them solving the problems I mentioned at the beginning of this post, and I'm actually comfortable with the way I'm using my computer right now. I plan in the future to refine those conflicting keyboard shortcuts and reactivate at least 4 virtual desktops to use when I want to multitask and do several unrelated things.

My experiment gave me excellent results. A whole new world opens up to me now, that of floating window managers - there's a lot to try out there! I invite everyone to give it a try too, for one week use exclusively a floating manager with the suggestions I make here, and if you are a fan of tiling managers like I was, you might be in for a very pleasant surprise.