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

Just a quick glance at the source files for the two WMs you mentioned (along with a few others):

cwm-----> 6328 cloc, http://ix.io/2DGD

evilwm--> 3257 cloc, http://ix.io/2DGI

dwm-----> 2505 cloc, http://ix.io/2DGQ

xwm------> 301 cloc, http://ix.io/2DGE

tinywm---> 115 cloc, http://ix.io/2DGR

I think it would be unfair to compare xwm to either based on the sheer difference in cloc (10x+). A better comparison would be to dwm, bluewm, tinywm, lainwm or any of the smaller code-base projects.

From a philosophical standpoint, xwm is written using the XCB protocol while the other two are written using Xlib. The "X New Developer's Guide" is a good reference to understand the difference: https://www.x.org/wiki/guide/xlib-and-xcb/

From a sheer dependency standpoint, xwm has fewer than the rest. There are obvious drawbacks to this, but I intentionally left xwm as "barebones" as possible, to allow the community to expand, patch, tweak and modify. This is consistent with the Suckless Philosophy of programming (https://suckless.org/philosophy/), which is based on the Unix Philosophy of programming.

Additionally, I have opted not to have a run-time config file. Everyone seems to have a config file these days that is either placed in an obscure directory, "hidden" from plain site or cluttering my home directory. I hate config files (and they hate me). Not doing so forces the user to glimpse into the source which, to me, is a habit that all existing and new Unix users should be doing.

Amongst other things, I provide no out-of-box multi-monitor support, no menu bar, no title bars, no tab focus or or any other feature that a regular user would find essential. Instead, these features will be offered as patches, which the user must learn how to apply themselves.

I hope that information helps answer your question a bit. =)




Thanks! I'm going to try it. What made you go for xcb instead of (arguably simpler) xlib?


XCB is closer to the X protocol, making it significantly smaller and generally faster (and more responsive) than Xlib.

The argument of simplicity for source is relative to the API implementation. In this use case, the XCB API is the clear winner (imho).




Consider applying for YC's W25 batch! Applications are open till Nov 12.

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

Search: