December 29, 2024

The other day I wrote and deleted a bunch of words about linux after somebody on Mastodon – no joke, this is a real thing that happened, dear lwn I never thought this would happen to me but – asked for distro suggestions. I deleted them mostly because once I’d typed them out I thought to myself, self, I bet nobody else wants to live like this. Nobody’s moving to Bouvet Island because Alert is getting too mainstream.
Here are some of those words.
Step one is to ignore anything you read or believe about minimalism. Absent an ethos to lean on minimalism is nothing more than a reactionary movement against a negative space. It means nothing absent what it opposes, like so many of its staunchest advocates; “there should be less of the things I dislike” is hardly a perspective. Instead, we will start from as close to nothing as possible and add with care. What we want from minimalism will appear, but it will not be minimalism.
Step two is to install Debian.
The server edition, not the desktop. I want a fallback option if the usual interface should fail, so I selected ssh as my only addition. No graphic interface or other services.
Install fail2ban and etckeeper immediately, then use the policy-rc.d trick to disable future autostarting of any services.
Install screen, tmux, sway, pulseaudio, Firefox with ublock origin, noscript and disabling page-chosen fonts. Install nmtui and nmcli, gedit, foot, toot, w3m, glow, z, etc. See other entries on my Modern Tools list for inspiration.
Get cage and build it locally. Cage is a Wayland kiosk tool – it runs one program full screen, the -s option lets you switch away or back via c-a-Fn#. Set user TasksMax to 95%.
Set up htop and dmesg on tty11/tty12 respectively, as systemd services. Do not do this in secure or production systems. This is for pets, not cattle.
Now, put your own ~/bin/ at the front of $PATH and start to create your set of bash aliases to run whatever graphical apps you’re fond of behind cage -s
. They mostly look like:
ff="cage -s firefox"
ddg="w3m lite.duckduckgo.com"
Mine mostly end with >& /dev/null && clear
I’ve got foot and gedit set up like this, foot because it’s an unadorned fullscreen terminal that works well enough and is very fast – console-native text handling is extremely slow, which surprised me, so long-running terminal-ey stuff goes in foot – and gedit because it’s the closest thing I can find in the linux world to notepad++, an editor I miss terribly.
Set up the per-project shell history hack: https://gist.github.com/mhoye/469ed97d7887b451da5d45b87acb53f5
Set your console font to something you like. I like my own, but we’re already cooking with weird ingredients here so maybe it’s better to make your own at home, but if you can’t, store bought’s fine.
Finally, as you start doing more things regularly, start making more aliases for them. History | uniq -c | sort -n periodically will tell you what you should make a short, memorable aliases for. The only thing I think I’m missing here is something that automounts/ejects USB drives under ~/mnt, which I believe is possible in console-land but haven’t figured out.
So: why?
If other people in the world have the computer problems I have now, no search has brought me to them. Error messages that do not exist anywhere except my screen and the program source if I’m lucky are part of my life. If something doesn’t work either I deal with it or I don’t. This is not the easy path, and you walk it alone.
The real reason is “because you’re not the boss of me, that’s why”, that I’m more stubborn than I am smart and I wanted to. Maybe why I wanted to will resonate with you, though.
The creator of Grep once famously said that the best way to make programs fast is to make them do almost nothing, and this computer – running an i.MX8MQ, a little four-core ARM SOC – feels capital-F Fast, responsive and snappy in that instantaneous way that nothing ever does anymore.
Second, it is – for the most part – comprehensible. At least as far as I can make anything built on the shifting sands of Systemd’s periodic treachery and DBus’ ersatz convenience. Autostarting as little as possible means cause and effect are rarely far apart, always a joy when the alternative is opacity.
The other “do as little as possible by default” payoff is battery life. I haven’t quantified it yet.
But the biggest reason is: this is my computer. A monument to some weirdo’s idiosyncrasies, sure, but I’m the weirdo in question.
It never feels like the ghost of somebody’s KPIs are rattling their chains in my attic or some sort of business-model chiropractor is about to refault my settings that are just a little too misaligned with their getting their bonus. But it’s not just the directed corporatist effluvium; so much of ostensibly-free software’s ideological mindshare has been neutered by rentierist collaborati that designing for informed consent barely exists. Is anyone out there hoisting the black flag and yelling “give me versioned fleet management or give me death?” “Standardize developer toolchains, to the barricades!”
No. Absolutely not.
I’m still whatever combination of naive and stubborn enough to believe that there is such a thing as personal computing and that it should be meaningfully, genuinely personal. I still think that a kind of computing anchored in consentful collaboration is not only possible but necessary.
I still believe in the bicycle for your mind, and this is my ride.