DATE: Wed 18 Aug 2021 18:24 By:

Back on DWM.

Those of you who hang out in my Discord server may have noticed recent chatter about DWM. I have recently made the switch back to DWM after a long old time on BSPWM.

Before I talk about this topic I need to address the elephant. Many people have said that the ‘Suckless’ project are have fascist leanings. I can’t actually find anything conclusive. Assuming smoke and fire are related I would like to take a moment to say that I do in no way support fascist politics, agendas or morality. I’m quite a hippy really and humanitarian social communism is way more to my tastes. As much as I usually don’t support the idea that art/work and artist/creator can be judged as unrelated. In the case of 2k lines of C that does literally the minimum possible; I’m not sure their politics could have much influence on the work or outcome. Fascism bad. got that? Excellent, now lets move on…

Why the change?

I have been on BSPWM for a while now (Over a year. Maybe more. I forget). While BSPWM is great there is a few tiny issues with it.

The first is that any workspace not currently visible is not rendered. Its frozen and unexposed. This sounds “fine” except that it means I cant capture things I’m not looking at in OBS. So if I want to capture Discords call icons or video I have to have Discord on the same workspace as OBS. If I am playing a game on stream or video and need to pop over to another workspace so I can check an email or tweak a setting on something, the video freezes. It’s a very minor issue. A tiny problem that is little more than a foot note. But its there every damned day for me and when someone else pointed out it was bothering them I started noticing it more and more.

The next things isn’t really a problem but another minor thing is that in my opinion Primary & Stack is the correct way of showing applications. BSPWM doesn’t support this. The idea being that anything you open is primary and takes up the whole screen. you open another things and it goes next to it. Then the next thing splits the right side of the screen again, and again, and so on. The left had column is always a full half of the screen. Obviously if you want to you can change this by increasing the primary stack number but generally the idea is the main thing you want is going to take up the bulk of the space and everything else is in a stack next to it.

The advantage of this is that you move up and down the stack with J and K and between monitors with H and L. The primary is simply the top of the stack. I’m explaining it badly I think. Well, I tried.

BSPWM uses a very sensible binary tree internal logic and has an easy to understand default layout. Its not Primary & Stack though. Rather than moving up and down the stack I have to consider lefty righty movements too. A minor thing but feels less smooth to me, less correct some how.

The next minor issue that BSPWM had was a silly one I know. But running a separate program to handle key inputs seemed to be wrong some how. I never liked that and I’m no sure why. Seems like configuring two things when only one was really required.

All that said, BSPWM is a great tiler and most people who are on tilers SHOULD be on BSWPM! its excellent.


DWM is a stupid project. Its pointless 2k line limit leads to borderline unreadable code. Its build in bar is fucking ugly. Its lack of re-parenting in preposterous and the fact that you have to batch C code to get basic quality if life stuff is literally mad.

DWM is the only tiler other than BSPWM that I can live with. I use the following patches.

I also maintain a “Config” branch in my local git repo. This contains my config… obviously.

My plan is to try and life life with just Pertag, center and attach bottom. I have already rejected the popular “Move Stack” patch on the grounds that it was stupid. I don’t care where a stack item is as the are all the same size.

The point of reducing my patches is so that if I have to rebuild my configuration from scratch its easier. Also as a nerd I really like messing with this stuff.

While I think that the fucking tedious method of merging git branches and applying patches is utter crap, I also think that the resulting tiler is elegant and gloriously basic. I admire the result but loathe the system that created it.

I honestly thing a fork where they let it use a config file for key bindings and settings would be ideal. But then we end up moving away from the elegance again. In the end. I guess ill just keep bouncing between DWM and BSPWM until I’m forced to use Wayland.