💾 Archived View for tilde.town › ~hush › gemlog › 2024-09-22.gmi captured on 2024-09-29 at 00:28:11. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
September 22, 2024
I went on a little window manager journey earlier this month, so I'm going to write about it a touch. I had been using a slightly hacked up version of DWM for a while - I removed the tiling algorithm in favor of maximized windows by default, and planned on writing a new tiling layout. I wanted to do a columnar layout that showed a certain max number of windows, and allowed for scrolling through the windows sequentially. Modelled after something like GNOME's material shell or paperWM extensions. I never followed through on that, though.
When I started with Linux, my first OS was CrunchBang. It's been long defunct, but there is a continuation project - CrunchBang++, which is really just a metapackage installed over a Debian base. I already run Debian 12, so I decided to install the metapackage on my system and return to the #! days for a bit. I quickly became disillusioned with the mouse-centric flow of Openbox, and also, look how they murdered my boy:
I mean, get that garbage all the way out of here.
So I went back to DWM for a minute. I decided what I wanted instead was to have the Maximized-by-default behavior I used with DWM, but with the option to break a window out and tile it with the main stack if I wanted two windows side-by-side. (for those curious: I maximize windows because I use a 13" laptop, so auto tiling usually just doesn't have enough screen space for each window to be useful.) That sounded like a task for a manual tiler, not a dynamic one. Old favorite BSPWM doesn't allow monocle layout by default, so I first tried i3 - but it's only monocle-type layout out-of-the-box appeared to be a tabbed layout, and I wanted to show my windows on the bar, so I wanted a straight monocle rather than a tabbed one. That led me to herstluftwm, which I'd tried once in the past.
Long story short, it does exactly what I want (with a little configuring) - windows are stacked and maximized by default, and if I want to split a window out, that's just a keybind away. The only drawback was that it doesn't have a polybar module built-in, and I wanted it to communicate its desktop and window information to the bar. Luckily, it does have a hooks system, and Polybar has an IPC client, so it was relatively easy to write a script that formats the herbstclient output for tag and window info that runs any time hlwm changes focus, tag, or window title, and prints the output to Polybar. So now things look like this:
tabs in my bar for each window
I'll probably stick around like this for a while.