---
title: I tried to write about minimal linux desktops, but it failed
date: 2022-02-20
tags: [philosophy, code]
description: There are some things I want to write down and I don't yet know how to put the different threads together.
---

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](https://reddit.com/r/unixporn/) 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](https://github.com/vivien/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](https://news.ycombinator.com/item?id=29942357) 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.
