Hacker News new | past | comments | ask | show | jobs | submit login

The tiling window manager I finally settled on is simply dwm.

I'm not totally sure if it's the best window manager of its sort. I find it more ergonomic than StumpWM, and I haven't felt the need to reach for the other tiling window managers out there.

A couple brilliant strokes in dwm are the alt-tab mechanism for swapping between workspaces rather than windows, and the idea that workspaces are actually just groups of windows which can be arbitrarily composed: more than one workspace can be selected at a time. In fact, alt-tabbing doesn't even swap individual workspace selections, but instead toggles back to the last such arbitrary group of selected workspaces. It's quite flexible and is under 2000 SLOC of C.




I finally settled for dwm too nearly a year ago and I really can not emphasise how big of a deal the ~2,000 SLOC of code really is. It allows you to read it all in about an hour and once you have done that you will be “elevated” from user to developer. Now instead of desperately combing through manuals and guides with a fine comb you will just go “I could implement that…” now and then, which has been a game changer in terms of how I view software.

Another commenter mentioned the lack of an extension framework and that applying patches could lead to conflicts, but I think this misses a bigger point. If you find yourself applying a ton of patches, just stop, dwm is supposed to be about minimalism and frugality, do you really need those features? I am very happy and productive with three patches: statusallmons [1] (~5 SLOC), warp [2] (~10 SLOC), and my own not-yet-public Fibonacci-style layout algorithm with a bit more features to support multi-head setups nicely (~90 SLOC). That is it! Keeping it simple may have seemed madness to me a year ago, but I think I now “get it” in terms of the freedom it brings through lower complexity, greater understanding, and thus ultimately hackability.

[1]: https://dwm.suckless.org/patches/statusallmons

[2]: https://dwm.suckless.org/patches/warp

Look at warp for a genius example of dwm simplicity. Other WMs will track the mouse pointer on a per-display basis and I was tempted to implement this for dwm, but then I tried the warp patch which is stupidly simple: move the mouse pointer to the centre of the currently focused window if it is not already inside it. No need for state and together with xbanish [3] you will always know where the mouse pointer is, yet it will not interfere with you while you work. ~10 SLOC, yet so incredibly powerful because it managed to take a novel stab at the heart of a problem.

[3]: https://github.com/jcs/xbanish


Your arguments have persuaded me to give it a try. Though I'll go for dwl - a wayland alternative based on wlroots to dwm.


The main feature that you've described is called (usually) 'tags' (windows have one or more tags and workspaces/viewports also have tags and a viewport displays all windows which have at least one of the viewport's tags). It is concept not specific to DWM at all and is much much older than it. Actually i3 and Sway feel like a big big regression in not suporting this concept even though they are so called manual tillers.

Biggest disadwantages of DWM are: That it does not have any normal plugin/extension/IPC mechansim. Applying patches to add features is not sustainable and yield conflicts. So much for flexibility. Also it is not a wayland compositor.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: