I tried to write about minimal linux desktops, but it failed
Ok, this is going to be a rambling mess. There are some things I want to write down and I don’t yet know how to put the different threads together. So let’s untangle that mess.
I am not yet sure where this is going
The first thread is about the linux desktop community. Compared to others, this community is tiny. Shell scripting for example is a much bigger community because it covers servers and OS X. Within linux there is also a large chunk of people who just passively use one of the big desktop environments. But I want to write about the community of people who actually create linux desktops.
The ricing community gets much closer. These are people who take existing pieces and put them together in new and interesting ways. Often this is merely about applying some colorscheme and picking a nice wallpaper. Sill I have a lot of respect for that community, because that is how I got started. But it is not what I am interested in at the moment.
Building tools for the linux desktop is much harder than creating websites or writing shell scripts. That is not because the tech is more complicated. It is just a function of the size of the community. On any given web topic you will likely find 10 helpful blog posts. For linux desktop stuff you are lucky if you find anything relevant at all.
A lot of quotes pushed into a single section
Which brings us to the second thread: Why should anyone even want to build their own desktop? Why not stick with gnome or KDE or whathaveyou?
For me the answer is a kind of minimalist aesthetics. When I think of all the software bloat, crawling just below the surface, I start to feel itchy.
Good design is as little design as possible. — Dieter Rams
Instead I prefer to only have a small set of pieces that I really like.
Keep only those things that speak to your heart. Then take the plunge and discard all the rest. ― Marie Kondō, The Life-Changing Magic of Tidying Up
Those pieces should not only be useful, but combine to something bigger than the sum of the parts.
You get simplicity by finding a slightly more sophisticated building block to build your theories out of. — Alan Kay
But this is not only about building a better desktop. Building it myself is an important part of the journey.
The real cycle you’re working on is a cycle called yourself. The machine that appears to be “out there” and the person that appears to be “in here” are not two separate things. They grow toward Quality or fall away from Quality together. — Robert M. Pirsig, Zen and the Art of Motorcycle Maintenance
Information walks into a bar
The third thread is about displaying up-to-date information in a status bar. In order for it to really be live, we need to push new information into the UI as soon as it becomes available. There are two main approaches for this:
The big desktop environments have settled on an IPC system call dbus. Dbus is verbose and XMLy and does not spark joy.
The other approach, used by i3bar, xmobar, dzen2, lemonbar and many others, is to use pipes: The bar will run a script and always display the last line of output. This is great because it fits well into the world of shell scripting.
While this approach is limited to text, most bars have added markup for colors and other things. Many people also use icon fonts and the expanding set of unicode symbols to get some more interesting graphics. With i3blocks and similar projects there is even an ecosystem of modular tools that can generate input for these bars.
How did I get here?
The next thread is about the people in this community. And this is where it gets weird.
There is this group called suckless. They build the window manager dwm (an ancestor of i3 and sway), and dmenu which is maybe best described as “interactive grep” (ancestor of rofi, bemenu, fzf, …).
What is interesting about this group is not so much the software, but the philosophy behind it:
Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions. — https://dwm.suckless.org/
This sounds exclusionary, but actually this approach results in much simpler and therefore much more approachable code. This design actually invites people to look at the code and learn about it. It is not more or less exclusionary than any other software. But instead of separating users from developers it separates user-developers from non-users.
I just love the suckless project. It is the very definition of what I want in software.
And then I read that they call their server “Wolfsschanze” and do torch hikes and all of the sudden I am a lot less enthusiastic about their philosophy.
Another person from the linux desktop community is Luke Smith. His youtube channel usually gets about 30k views per video. He talks quite eloquently about vim and dwm and how the jews are using mainstream media to brainwash us.
So yeah, this community is full of racists.
Let’s quickly talk about something else
While using pipes is obviously the much cleaner option, most mainstream applications broadcast their status via dbus. So I did what seemed obvious and created a little tool that listens for status updates on dbus and writes them to stdout. The dbus status indicators can also have menus, so I used dmenu to display those.
The result is available on github: https://github.com/xi/polybar-status-indicators
I have no clue how to end this
I really really like minimalist software. I seem to share this longing for purity with fascists. That’s fucked up.
I can write my own tools all day, but I will probably never be able to create my own kernel or web browser. So I have to live with the bloat that comes with them. And I want to communicate with the rest of the world, so I have to accept the bloated communication protocols.
If the minimalist aesthetics are politically dubious and practically unachievable, why should I stick with them? In short: because I do not know any other way. And I am increasingly worried about that.