Exploring the World of Tiling Window Managers: A Journey to Boost Productivity
“Beautiful!“, that was my reaction when I started to experiment with tilling window managers. I was a desktop environment person where whatever comes out of the box I use it and I use it well. I have used Unity and when Ubuntu switched to Gnome, guess what I switched to Gnome. This was me until very recently when I realized the smallest tweaks can bring an amazing peak in your productivity.
The thing that got me giggling was I could write custom widgets. The thing that I had a lot of trouble with recently is excessive use of Alt + Tab
and finding the window I was working on. I was also wasting a lot of time shuffling the tabs on Guake
terminal emulator.
I have recently observed myself while hacking on Open edX where I needed to shuffle between multiple windows to see the tailed logs from all the containers I had to shuffle between 3-5 terminal windows. There have been times when I am just cycling through the windows and I forget what I am looking for. There has also been the case of what I call “Phantom Window Cycling Syndrome“ derived from Phantom Vibration Syndrome where you just shuffle the windows while thinking about something so a series of Alt+Tab
for no reason at all.
This made me think that there has to be a better way to do this and I landed up on this amazing terminal emulator called Kitty. Let me be honest I did try terminal multiplexers like Tmux and Byobu but Kovid’s argument on them won me over.
This is what my Kitty terminal looks like and this has already saved me a lot of time.
This made me think if just terminal saves me so much time does it make sense to invest some time to pick up a tilling window manager? Yes, I know what you are thinking, he is going to go with i3 wm. But, I wasn’t sure about it and I wanted something that I could hack on this made me go with Qtile.
To be honest, I felt like a fool initially because there is a thing about these tiling window managers, you just get a TILLING WINDOW MANAGER. I was lost on how to connect to WiFi, how to connect to Bluetooth, and how to launch any of the applications. It took some time to configure and understand how things work. I was annoyed initially but then the learning I got with everything was worth the time.
I was able to nail down exactly what tools I needed. I configured network tools, and Bluetooth and installed and configured rofi. I faced a very weird issue with Qtile I was not able to extend my display or use the external monitor. This made me learn about xrandr and also a bunch of things about how the display works and how scaling works internally. I did hack around Qtile to auto-detect the monitor and switch when it detects a new display but Qtile has a bunch of issues with displays and I wasn’t sure I was ready to tackle them. I did a bit of digging around and found Awesome WM to be a good choice and I installed it. To my surprise, the learning I had with Qtile works the same with Awesome.
Awesome uses Lua to manage the configuration and because of Neovim I do have some exposure to it which made configuring and playing around Awesome WM fun.
I don’t have to deal with unnecessary window switches and monitor issues now, most of the basic utilities are solved for me. I generally work with Pomodoro hence I started searching for a Pomodoro widget for Awesome WM. I found this amazing widget/plugin called awmodoro but there is a small twist it hasn’t been updated for 7 years and it has compatibility issues. Hence, I did the most predictable thing, I ported it and added a small feature to add an image to the Pomodoro alert. Here is what it looks like:
I have also added a list of features that can be a future implementation do let me know what do you think about it.
Happy Hacking!
Subscribe to my newsletter
Read articles from Farhaan Bukhsh directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Farhaan Bukhsh
Farhaan Bukhsh
I am curious kid on the web, trying to learn more about life and other things. I enjoy building things and my medium of expression is mostly code. I have been dabbling with OpenEdx recently. I love to talk about distributed system, I have taken up learning Rust recently and been writing Python, Golang and JavaScript for a while.