You Don't Need a Tiling Window Manager
This post is more meant as an invitation to open a conversation (or at least a reflection) on productivity, customization, and usable software ecosystems. I am not attacking anybody’s software nor setup!
Thank you for your understanding, let’s get going.
Introduction
“— Well, it took me 3 days, but I configured Xmonad (a tiling window manager) to a place that I like, is æsthetic, and that I can work with”
“— Do you have notifications?”
“— Not yet”
“— And a way to connect to bluetooth or wifi?”
“— I still do it in the terminal”
“— What about your login manager?”
“— also via the terminal”
“— Can you lock your computer?”
“— Yes, but sometimes it won’t come out of sleeping mode when I do lock it”
“— Well at least your color theme is kept through all the apps right?”
“— …”
Here, I chose Xmonad because that’s the tiling window manager that was the most painful to me, but the same applies to pretty much all of them, and don’t even get me started on status bars.
In this article, I’m going to show you that Gnome can do pretty much everything you need it to, can’t do things you think you need but actually don’t, and all that with minimal and user-friendly configuration.
This advice is mainly geared towards people considering switching to a TWM and those who use one but are frustrated and switch every couple of weeks hoping they’ll find “the right one”. But it can probably be useful to experienced “Tilers” (We’re gonna call them that now), would it only be to stop recommending insanely complex systems to beginners.
Why do we use Tiling Window Managers?
Tiling Window Managers have the immense advantage of being “keyboard-centric”, which makes them insanely comfortable to use, and allows an experienced user to go through their open windows extremely fast!
Every window takes as much space as possible, which makes them readable. All the data is under the user’s gaze, nothing is hidden, it’s amazing.
A notable point about TWMs is their æsthetic! There’s a very good reason r/unix porn is filled with Hyprland and DWM screenshots.
For me, a huge positive point is the comfort. I get to sit back with my keyboard on my lap, and away I go, coding merily (at least until Firefox blocks me in a situation where I have to reach for my mouse).
These are all really nice advantages that a new linux user may want to take advantage of, but here’s the one and only adjective I keep hearing when talking about TWMs: “Productive”.
The problems with Tiling Window Managers
And that’s where I completely disagree, and where this article turns into a (hopefully constructive) critique of the TWM paradigm.
My main issue with TWMs is the ungodly amount of time it takes to get a working system.
Because TWMs exclusively manage windows and nothing else, you have to set up everything manually. I was more than happy to browse reddit to find the TWM that would suit me best, but now I’m looking at a comparative list of linux audio managers because that’s not included. That’s not productive, nor is it a nice experience.
Secondly, they break easily. There is always going to be a situation that either you or the developer didn’t think about, and now you have a black or frozen screen and you have to hard-reboot. I am going to be honest, this is a pretty rare situation, but when it happens it is soul crushing.
The third big one is the “1% situations”. There are always things you need to do 1% of the time that you absolutely did not think of when initially setting up your working environment. That could be sharing your screen, changing the audio output, taking a screenshot, changing the keyboard layout, etc. Those situations are annoying no matter the desktop environment or window manager, but they turn into nightmare-ish events when you are using a tiling window manager.
I used to always have gnome installed on all my systems just in case I would give up trying to find a fix on i3. This means that logging out, logging into gnome, doing the thing, logging out again and back into i3 was less painful than doing it straight from i3.
May Gnome be thy answer
One quick note before I start this chapter: I use gnome because that’s the default on Fedora, but I’m absolutely convinced the same can be achieved with KDE and many other desktop environments.
Dotfiles
One of the really cool features of TWMs is the config file. You can easily share your config and reproduce it on all your computers.
The way you do this on Gnome is not standard compared to what you are used to, but it works great.
Gnome uses a cli utility called gsettings
that allows you to read and write
gnome settings straight from the command line.
You can easily harness the power of that command to save settings that you edited in the GUI using an extremely basic script like the following:
#!/bin/sh
# Description: A script to help find what gnome setting
# was edited
# Write all the settings to a file
gsettings list-recursively > /tmp/gsettings_before.txt
# Wait for the user to make changes
echo "Now go change the settings you want in the GUI"
read -p "Press enter when you're done making changes"
# Write all the settings to a file
gsettings list-recursively > /tmp/gsettings_after.txt
# Diff the two files
diff /tmp/gsettings_before.txt /tmp/gsettings_after.txt
The settings outputed will look something like this (here I disabled the “Hot corners” setting):
899c899
< org.gnome.desktop.interface enable-hot-corners true
---
> org.gnome.desktop.interface enable-hot-corners false
Once I know an option’s name and value, I can set it from the terminal using
gsettings set {option name} {option value}
.
Then, to save my gnome config to my dotfiles, I simply create a configuration script that sets all the options one by one:
#!/bin/sh
gsettings set org.gnome.mutter dynamic-workspaces false
gsettings set org.gnome.desktop.wm.preferences num-workspaces 5
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface enable-hot-corners "false"
# ...
This combines the best of both worlds, reproducibility and discoverability! I no longer need to browse through an extensive wiki to know which options I can use, I simply go in the settings and save them using my helper script.
Workspaces / Virtual desktops
One of the killer features in TWMs are their virtual desktops. You don’t need to put all your windows in the same place, you can spread them over multiple workspaces and switch directly to any of them.
This is actually very simple to reproduce on Gnome. First, you need to set the option Mutitasking > Workspaces to “Fixed number of workspaces” and set the amount you want (I personally use 6 but the standard is 9 or 10).
Then, set a keyboard shortcut to “Switch to Workspace 1”, and one to “Move window to Workspace 1”, and use the configuration script we created earlier to adapt the shortcuts for the other workspaces (Gnome only allows you to customize shortcuts for workspaces 1 to 4, so you will need to use this method if you want to use more).
And there you have it! Convenient workspace switching from the keyboard.
You probably should not use Meta+number for workspace switching because this shortcut is used to open and switch to applications on your dash (the bar at the bottom), which is really useful.
The shortcut I use is Meta+Alt+Shift+number, and if you want to know how I do it in a convenient manner, check out my article on the subject.
Window resizing
Ok, this is a big one.
Maybe you don’t need automatic window resizing. What is it useful for?
Having two apps side-by-side? There’s a shortcut for that on Gnome, taking an extra second to position the windows won’t “kill your workflow”.
Opening 5 different terminals to multitask? That’s what tmux is for.
The only shortcuts you need to know for Gnome are: Fullscreen app, pin a window to the right or left of the screen and switch between windows on the same workspace.
For switching between windows, I recommend using the
org.gnome.desktop.wm.keybindings cycle-windows
and
org.gnome.desktop.wm.keybindings cycle-windows-backwards
options, they’re
faster than the default option which opens an interactive menu that is pretty
useless.
Be productive in 15 minutes
With the information you now have at your disposal, you can go and use Gnome in a keyboard-centric way that closely resembles using a Tiling Window Manager.
And you can actually start working with a setup that can be configured in 15 minutes or less, even if you have never touched Gnome in your life.
The next steps would be to set up a good tmux configuration, because tmux itself is like a tiling window manager for terminals, and in that situation it actually makes a lot of sense. Obviously this is only useful if you have a terminal-centric workflow, so if you use VScode you’re pretty much done.
I would also strongly recommend making your keyboard smarter instead of your window manager. I have personally used arsenik to set up a powerful and productive config for my laptop keyboard, and I think it’s an invaluable resource. Following the readme will introduce you to many concepts that make using your keyboard much more ergonomic.
Conclusion
And now the twist: I actually think TWMs are amazing. But I am convinced that you should start with a solid Gnome or KDE config that already works great and is productive before you start looking for other options.
Especially if you are a “beginner” or a lurker in the vast field of tiling window managers, it is a far better investment to slightly customize Gnome to your liking rather than having to reinvent the wheel because you wanted something that was easily obtainable in the tool you already have.
Also, you will be productive much quicker on a TWM if you have gotten used to the workflow before even trying a single one.
To generalize this conversation: It is far better to improve the tool you already have (it’s generally surprisingly easy and a lot more fun), and once you have actually found what you really enjoy, and the way you like to work, maybe then can it be useful to look at other, more specialized tools to see if they fit your needs better, and you will only be able to know because you actually know your needs!
That’s productive.
This advice also applies to mecanical keyboards (if you want to keep reading my blog 😉).
I hope you liked this article, if you want to give me feedback, critiques, or
simply say hi, feel free to email me at contact @ astrocephale dot xyz
, I’d be
more than happy to hear from you!