Adventure In Tiling Window Managers

A year or so ago my primary operating system has been Manjaro Linux, the primary XFCE flavor. I like the well designed minimalism of it after decades of using GNOME in Ubuntu.

Meantime the real operating system I've been actually living in is emacs. In emacs windows are tiled, workspaces built in, keyboard navigation is first class citizen.

That's not the case with a typical desktop environment. I figure let's just extend the entire idea all the way to the entire desktop.

The solution to that is tiling window managers. There exist a whole class of them, but I didn't have to do much self-experimentation on the various choices on my own, Derek Taylor's DistroTube had done that so I don't have to.

My first attempt at it was many months ago, starting with Qtile. I chose that because it was highly recommended, apparently powerful; and the fact that it's configuration script runs on Python is a great bonus.

I did consider running exwm from within emacs some time back. But asking emacs to manage the entire desktop feels one step too far.

But I was not serious about it then. As soon as I went from the login screen into a desktop environment running only Qtile, I micro-panicked not knowing how to operate it. The lack of the ability to discover things by pointing and clicking was debilitating. I went straight back to XFCE.

While in XFCE, I created shortcuts to resize windows in a tiled manner. It's good enough but it felt clunky. There's not enough smartness found in a real tiling wm.

So two weeks back I felt like having a home makeover to shake my desktop up for real. I reinstalled Qtile and got serious this time.

When only tiling wm was running, screen resolutions came out wrong, multiple screens can hardly coordinate, cursor scrolled the wrong way, tap-to-click didn't work, volume keys did nothing and so many more nonsense. I thought I could set all those from the configurations of the tiling wm itself but there's no such option.

So I tried i3. Manjaro comes with an i3 flavor so maybe their default setup has everything in place? I installed the necessary packages, logged into i3 and the result was exactly the same if not worse.

At this point I thought I got things wrong on a conceptual level. Tiling wm are not full desktop environment. They really only do the job of managing windows and nothing else.

The hardware level stuffs are well configured from within XFCE. Therefore the solution was a run tiling wm from within XFCE. During OS login, pick XFCE as the desktop environment and not the tiling wm. That's really counter intuitive.

From within XFCE though, configure it to not use its default window manager but the tiling wm of choice. On top of that remove all shortcut keys that intercept with any use of super-key (because tiling wm make heavy use of super-key, if you're inclined to follow their design). That way I still get to use XFCE to do manage things that Qtile could not.

It was dandy for awhile, I tested all my major use cases to make sure things didn't break. The major applications are really just emacs, Firefox, Brave, KeepassXC, and Dropbox. That's pretty hard to screw up.

The last one to test for was Steam. The launcher app ran, I launched the game (Street Fighter) and out came nothing. The launcher indicated that the game was running but nothing was shown. This blows. I tried tweaking various things within Steam, trying on various versions of Proton, nothing worked. I started to wonder if tiling wm inherintly hated full screen games. I've gone too far at this point to give up just because a game couldn't run. I was wondering if it's Qtile's fault.

I went back to running pure i3. Steam worked exactly the same, no game was visible. I started to think how much does it take to revert XFCE back to the default settings.

Search engine wasn't much help, I could be doing something too edgy. After all I'm not even entirely sure that running Qtile on top of XFCE is the kosher way of doing things.

And then I remembered one setting. I went to the session-manager of XFCE, there's something called "run GNOME services". I didn't know what that is, still don't. I had that ticked, and the game ran like a charm.

Now Qtile manages my windows. I get to configure its behavior slowly in peace knowing nothing is severely broken. This is the part that feels like gardening or home decoration, and that is still ongoing.

It's not done and maybe never will. System tray doesn't behave well; there's no mean to manage audio devices from the task bar; what shows up on the secondary screen has been inconsistent; and my long time dynamic wallpaper app (Variety) doesn't work here.

The great thing about works like this is that the benefit can last forever. The result is portable across any computer I use, the productivity gain is minute but it compounds across decades.