214 comments

[ 3.4 ms ] story [ 245 ms ] thread
This caters to a very specific audience though. This particular concept while labelled suckless sounds like hell to me.

To change a config I need to recompile stuff? Jikes

To each their own though. I can see how this could work well if one invested a mountain of time into learning & fine-tuning it all

> suckless tools having their configuration baked into the executable at compile time, they start up instantly

I wonder how many milliseconds slower the startup of a C application will be, when it reads a config file from SSD first.

Milliseconds? Probably less than one.
Yeah, reading a single file will not have a noticable impact, but we all know it will not stop at a single file. Before you know it a full blown web browser is included. The suckless philosophy is pretty extreme, but I'm grateful there are people exploring this space.
Yea people seem to be quite critical of this when its not like they have to use it.

Do people act this way if you do LFS?

I think that's the key thing. It's not about config, it's the fact that the "plugins" are all compiled in as well— meanwhile over here in the real world we have there are entire programs and methodologies dedicated to managing directories of vimscript files, and sharing your personal dotfiles directory on github is a thing.
With suckless you don't have your dotfiles on GitHub, but your fork and then you have to keep close to upstream all the time. Else they might cause a merge hell later ...
And then pretty soon the plugins are in one or more scripting languages (probably JavaScript) and your scripting subsystem is 100x the size of all of dwm.
> it will not stop at a single file. Before you know it a full blown web browser is included

There are real world examples like bspwm (my favorite window manger), that proves you wrong. It is configurable via config file and is as "suckless" as it could be.

I benchmarked my 600-line zsh config this morning because I was curious how long it takes to run. It takes about 0.02 seconds to run, and that's on a €250 crappy Celeron laptop.

Reading a simple config file will probably be faster. So yeah, it's pretty much negligible.

I do like the config.h as it's easy to include your own hacks, I added some key mappings and modifications to dwm that would be much harder with a config.ini or whatnot; but that's very different than startup speed.

Over millions of application runs, it adds up to hours!

But seriously, reading a config file means there has to be a syntax and a parser, and both have to be maintained. The syntax can be limiting or fiendishly complex, both by accident. The parser can have bugs. Is it really worth adding these headaches just so editing your config file is one instead of two commands?

The recompilation takes basically no time. And I think it's appropriate for something like a window manager where changes should be infrequent and the thing should be as fast and do only its job. For people who frequently change small things, this provides some friction and can be annoying to change a pixel difference and have to wait a few seconds to see the difference.
On the other hand, compiling these applications is also near-instant and literally just requires executing "make", another thing they are quite good at. Small application <=> small build system.
The code is less than 2k lines. It's understandable probably after a weekend.
(comment deleted)
(comment deleted)
I get that people enjoy very minimalist computer experiences, but startup time is hardly that different between these programs and other slightly more ergonomic programs which offer conveniences like a config file.

If you look at my startup time for my system it goes something like this:

10s - waiting for monitor to wake up to pick OS at dual boot menu

15s - typing disk encryption password

15s - system uses disk encryption password to retrieve LUKS key

5s - Literally the entirety of my OS and window manager and autostart programs beginning.

I use i3 for my window manager, which manages to launch instantly, and alt-enter launches alacritty for my terminal, which also launches instantly. But even heavier terminals like xfce4-terminal launch very quickly. These programs are lightweight sure, but they don't need to be recompiled for configuration and have some ergonomics. I don't see the marginal benefit of maybe 4s at boot time being worth that hassle.

Stronger yet I rarely reboot my systems. Either they run 24/7 or I put them to sleep.

There’s definitely good use for these optimized tools. Especially on old systems with low resources and slow CPU’s.

I generally like the simplicity of suckless tools. dmenu together with i3 is a nice duo.

You have working sleep? Man I'm so jealous.
I've had working sleep since at least 2010 on ThinkPads and Dell XPS, Ubuntu and now Mint.
Geez. I think my Mint worked for a while. Now Win10 doesn't even work. I have to reboot always- I suspect it's because of my second monitor (I only started using it as a real work machine since the WFH started).
> You have working sleep? Man I'm so jealous.

Suspend to RAM does not work for you?!

What distro do you use and what kernel? What do the files /sys/power/state and /sys/power/mem_sleep contain? Maybe it's just a SystemD issue?

I'm someone else but I get https://gitlab.freedesktop.org/drm/amd/-/issues/883 on a T495s with debian testing
I'm sad and surprised that one still has to go through so much trouble trying to use an AMD computer with Linux, especially considering the performance and security situation with Intel in the last couple of years.

For what it's worth, a comment [0] on the Archlinux BBS says that Linux 5.6.13 fixed the issue for the user's t495 and Debian seems to have 5.6.14, so if you haven't yet tried updating the kernel, definitely try now.

[0] https://bbs.archlinux.org/viewtopic.php?pid=1905479#p1905479

I completely agree. Suckless tools shouldn't be pedantic about C code minimalism. As per my definition, suckless tools are lightweight, KISS and offer some simple ergonomics. I find it nice to be able to scroll the terminal up, when I'm not inside of tmux.
The main thing I loved about suckless and missed on OS X was DWM. Dealing with windows, even with the tiling aspects, hammerspoon to automate things, and playing around with configs to turn off all the animation, on OS X I was still much more productive using DWM.
I don't see why you're focusing on speed (does the author even mention it? I skimmed TFA and didn't find it mentioned). Less bloat, simpler code means fewer bugs and it means that it's easy for a hacker/power user to dig into the code to understand and modify it, that's the killer feature. After one hour poking into DWM I understood how it worked and how I could modify it to fit my needs exactly.

I use a bunch of suckless tools, in particular DMW. I don't necessarily agree with all their choices but for me it's about configurability and reliability. I consider myself a power user, I know how things work, I don't need a gui to configure my keyboard or network interface. I don't want daemons running in the background and overwriting the settings I apply manually with the command line (a common issue I have with more fully fledged "desktop environments").

Ergonomics easily win too, sure I have to mess with C code to get the config I want, but then it's basically tailor-made vs. ready-made. All the functions I use the most are one key keystroke away, I use the mouse so little that I often find myself searching for it because it ended up buried underneath some papers. I want to focus the terminal? Win-C. I want to focus Vim? Win-E. Firefox? Win-w. I have special customization to sticky windows the way I like, placement rules etc...

Everything is fast, reliable, no pointless transitions, no cruft, no having to worry about the next update changing a behaviour that I use and me having to figure out how to revert the change or relearn how I do things. >I don't see the marginal benefit of maybe 4s at boot time being worth that hassle.

Before I used DWM I used StumpWM for more than a decade, an other tiling WM. Being written in Common Lisp it was quite slow to boot up from an image dump (especially 10+ years ago on HDDs and vastly less powerful CPUs). For me performance is highly irrelevant, the "hassle" is what I'm in it for. It's like learning to touchtype, at first it's immensely frustrating but once you're past the learning curve it gets really beneficial. Digging throw DWM's code is harder than clicking on Gnome's menus, but once you've got it working exactly like you want you probably won't have to touch it for a long while.

The last significant change I made to my DWM fork dates from July 27 2018. Since then I've only tweaked a couple of keybindings.

Doesn't everything you're saying also apply to most tiling window managers? i3, bspwm etc
It does mostly, I was mainly contrasting with the big DEs like Gnome and KDE. I don't have any particular allegiance with Suckless, I just like they tool. I try to stay away from their community (mailing list etc...) because they have a rather arrogant mindset IMO, as an other comment here points out.
> I don't see why you're focusing on speed (does the author even mention it? I skimmed TFA and didn't find it mentioned).

Second paragraph, second phrase.

> However as a side effect of suckless tools having their configuration baked into the executable at compile time, they start up instantly.

Fair enough, I missed that. I agree that it's a rather minor advantage in this day and age.
>Less bloat, simpler code means fewer bugs

Often window manager bugs seem to be working around strange behaviours from individual applications. I wouldn't assume simpler code means less bugs, it could mean more. dwm must be very well tested at this point though.

(comment deleted)
I don't care about startup time in my window manager but st launches in 50 ms and alacritty takes 500 which is a noticeable and annoying difference so I'll take st every time. A lot of the time I want to open the terminal with a specific command in mind so with alacritty I ended up typing before it launched.
Seems like having to use a bunch of popular patches is counter to the author's other praises about how simple and minimal the software is. Why doesn't upstream integrate them and let everyone use them without having to patch?
Because suckless tools value low line count over most other metrics.

The software is generally pretty good though, they cater to a niche. Dont be mad if thats not you. (Its not me either)

Luke smith has some pretty good content covering their tools

https://youtu.be/unqsQJaECv0

After everyone upstreams their favourite feature, it'll end up as bloated as the normal (sucky?) software they ostensibly hate.
I see it more as staying modular. Not everyone will want the same patches. This way you build your own version with just what you want.
I like "tabbed". Traditionally I use terminal tabs on local machines, and tmux on remote. (tmux in tmux is just too much tmux for me)

After I've changed to alacritty, which does not supports tabs, I could easily recreate my old workflow with "tabbed".

(I've never heard of suckless previously, I just knew that I want some generic X11 tabbing SW (and I was sure it must exists somewhere, so have put a lot of effort in googling) - maybe I should check the other things there too...)

I use some of the suckless suite with minimal configuration and it works well. The configuration isn't all that bad tbh, no worse than the mini-dsls many other non-trivial programs have.

I think people should give dmenu a try. It's an application launcher, but it's unix-y design allows for composition in ways that are very interesting.

I'm not familiar with this "suckless" philosophy, although I've seen it go by a couple times recently. I'm guessing that "suckless" means something different from what I might guess, given half of the article is about how great it is consists of having to debug some serious problem yourself, and the rest of it is self-congratulation over having to recompile everything because "reading configs is hard".

To paraphrase Arthur Dent: "Ah, this is obviously some strange use of the word 'less' that I wasn't previously aware of."

> If something goes wrong while using them, you can easily jump right into the code that implements them and nail down issues using basic debugger skills.

I feel like we have very different conceptions of what 'easily' fixing a configuration issue looks like.

From the implementation POV, suckless software is very simple, and this makes it easier not only to tweak configuration (which is usually done C headers through defines), but also any kind of customization you might need.

Take their window manager dwm as an example. The codebase is only 2000 lines long, so any bug you find will have to be hidden in those 2000 lines. If you take a Sunday afternoon to study the code, you will very likely understand how every piece of the software works, at which point you will be in a position to fix anything you might find. You might even end up forking it and implementing your own window manager (AwesomeWM was originally forked from Dwm).

This comment strikes home. The "bug-space" is so much smaller, and definitely possible for a lone newcomer to grasp in a day or two
A window manager may be only 2000 lines of source code but it implements a host of formal and informal standards and interacts with hundreds of other programs on my computer.

You may need only a day or two to orient yourself to the source code, but that’s on top of months or years of experience with X11R6 and ICCCMv2 and EWMH and such. How much debugging did you first need to do to discover your current issue was even in dwm?

EDIT: I especially love the phrasing in Wikipedia's ICCCM article: dwm "can be configured for compliance". If 'configuration' can include editing source code, I'm sure that's true!

I agree to an extent. I'll admit, there is much more under the surface of dwm that 2000 lines of source code. It's all abstractions in the end. But Gnome and KDE are more likely to have bugs because they cover such a wide scope. I've never had dwm fail to do what it claimed to do. But I have had weird Gnome glitches with taskbar hovering and window dragging with workspaces, etc.

Dwm "wins" by just giving up, in a sense. It doesn't try to implement a taskbar, therefore it cannot have a buggy taskbar.

EDIT: I guess it does have a "Taskbar", but in a very, very limited scope.

iirc Dwm doesn't have a "taskbar", at least by default, there's a patch for that.
Yeah, I guess a better word is "statusbar" or "workspace bar". It just displays the currently selected workspaces, the current window's title, and dwmstatus. The point is that it doesn't try to manage buttons and icons for minimize/maximize/multiple-stacked window types etc, like a traditional window manager
> If you take a Sunday afternoon to study the code, you will very likely understand how every piece of the software works, at which point you will be in a position to fix anything you might find. You might even end up forking it and implementing your own window manager (AwesomeWM was originally forked from Dwm).

I don't think I have ever needed to do this "fix" any piece of configuration in any software.

While I understand the concept and approach, I don't think that this is a productive use of most people's time.

Be a little charitable to OP and this reply. The configuration is indeed in code but it's macro defines. It's essentially as simple as changing a text configuration file, it's not like you have to actually edit code (as in new functions, adding actual logic). Things like fonts and sizes and colors is changing defines, it's actually simple.

Now when it comes to more complex stuff, like hotkeys, well you're essentially programming already in most other wms that doesn't have such things build in. AwesomeWM, i3, qtile (not popular but I used it for years) basically is half-way to programming, although it's a line, so it isn't any worse. I think the thing people aren't getting is the code is actually simple, so editing it and recompiling it isn't a chore.

I actually am quite familiar with suckless tools and I do consider myself an advanced user, so I'm probably part of their target market as well. But to be honest, from a pragmatic point of view I just don't see how configuration through code is better/worse than configuration through dot/json/ini files in the average "suckless" use-case. Why must this even be something that I care about?

If it's a case of their software being simpler to understand so which makes it easier to fix bugs, then sure, I get that. But in my experience, software that has been around forever just tends to have fewer bugs in general so it's also just something else that I simply don't need to care about. And how often does the average user of suckless tools actually have to fix bugs in the programs? If it's more than once, then does the label "suck less" even qualify?

Is it just because the software is extremely minimal and therefore less "bloated"? I get that too, but personally, why would I care if a piece of software is 70kb or 500kb in this age? YMMV.

Don't get me wrong - I'm not trying to bash suckless or any other community here. I'm just very pragmatic about the tools that I use and my workflow. If you're the type of person that likes to tinker and customize every aspect from the ground up, sure then maybe suckless tools are for you. Tinker and mod away, there's absolutely nothing wrong with that.

> I get that too, but personally, why would I care if a piece of software is 70kb or 500kb in this age? YMMV.

I'm torn on this because I am way, way over screwing around with my OS, but I also hate that all the modern standard desktop operating systems (macOS, Win10, Gnome3 or KDE) that you get if you don't want to jack with defaults and configure things or use some way-less-popular so likely to be (even more) janky distro or "spin" or whatever, want to take up a gigabyte or more (way more for macOS and Win10 especially, tens of GB) of disk and hundreds of MB of RAM, while delivering experiences that are marginally better than what we had in the late 90s and early 2000s with sub-GB OS installations and low-tens of MB of memory use when idle.

All the more reason to not get worked up over including something as mundane as a TOML parser in your dependencies for a config file. So that, you know, you don't have to recompile your WM whenever you want to adjust something.
Personally, it's a hugely productive use of my time, if I didn't have the ability to customize my UIs to work around my health issues I could code very little, or not at all.

I use Awesome WM which is configured / scripted with lua. I know lua already so it's great.

Have you ever used software with bugs?
I used st for a while but switched to kitty. kitty obviously has way more features (things like colour switching can be added to st, but requires messing with patches which I dislike, and dislike more than compiling on each configuration change).

I've been using kitty for a few months now and performance is great. in fact, the biggest performance gain I saw was when I switched away from "oh my zsh" to a manually written `~/.zshrc`.

Don't tell anybody where you placed your .zshrc- it's supposed to be a secret!
On top of that, kitty’s window management / split pane features are way more performant than tmux’s, which contradicts one of the early points in the article about st.
As much as possible, I try to use software created by kind communities. The behaviours and attitudes in the "suckless" world come across as combative, exclusive, and unpleasant.
In what way are they combative or unpleasant? I've never experienced this. I enjoy the philosophy and opinionated approach they have to development. I setup an old thinkpad with openbsd and dwm and st and it all worked great and i learned some C along the way. I also used sent - their plaintext slide presentation tool to give a talk at work and it was a pretty cool way to put a presentation together quickly and focus on ideas. Anyway - I like their software and the opnionatedness makes it kinda fun to explore.
Start with the name. That puts it in opposition immediately. They present a lot of that opposition to projects and people, rarely stated kindly.

They could express a positive enthusiasm for simplicity, but that's not the way they go about it.

>Start with the name. That puts it in opposition immediately

The name that immediately claims that their software sucks? I get where you are coming from, but you're just labeling the average software with a different term.

It very very clearly implies that other software sucks and theirs sucks less. If there would be any ambiguity in this they explicitly bash genetic "other hackers" all throughout their philosophy page. It's not exactly subtle.
Accusations of "elitism" being what they may, the name is in fact a slice of humility: they advertise that their software "sucks less", not that it is "without suck".
This isn't an accusation. They explicitly mention this is as a design goal on their page. See the "Differences" section: https://dwm.suckless.org/
I always found the elitist statement on that page strangely at odds with the rest of the philosophy (at least how I understand it).

I mean, if everything is small and simple, doesn’t require you to learn a frameworkish configuration written in yet another language but can be configured with what amounts to a key/value file and can be installed in seconds with make + sudo make install, then it’s hardly elitist.

I guess the name comes from Mutt:

> The Mutt E-Mail Client

> "All mail clients suck. This one just sucks less." -me, circa 1995

The above is in essence a absurdly humorous, self-derogatory show of humility, summarizing the sysiphean task of trying to make any software bug free and useful in any way.

That's not the way I understand the "-less" composition they use. "harmless" doesn't mean "poses less harm", it means "poses no harm". "colorless" doesn't mean "less color", it means "no color". And so on. So to me, "suckless" means "doesn't suck", no humility. Admittedly, it doesn't exactly follow the normal composition rules so the exact interpretation is more up in the air, but that won't change the fact that many people will read it the way I described above.
I think it means both. The ideal is to be suckless, but practically, the most one can hope for is to suck less.
Well in this case, "software that sucks less" is on the top of every page of their website, so the intent behind their name is pretty clear.
Anslem of suckless explains in a conference video that it was basically the domain name they ended up with that got traction though not everybody liked it to begin with. Which kindof sucks in itself but you know..
Well if you read their philosophy page it's half about how they want to write cool software focusing on advanced users, and half about how everyone else is a misguided idiot with wrong ideas... I mean it's kind of in the name. I always took suckless to imply that everything else sucks more.
There was a tweet about Nazi stuff:

https://twitter.com/pid_eins/status/1113738764797534208?s=19

See also

https://news.ycombinator.com/item?id=20845633

I don't know much more about the community, I don't like suckless tools.

(comment deleted)
-1 points, I guess some people don't like links
Oh nevermind, I saw the lobster post, FRIGN says he wasn't aware about Charlottesville at the time (living in a basement without internet access, probably).
>living in a basement without internet access, probably

Or not in America. As far as worldwide events go, Charlottesville wasn't that noteworthy.

This was all over the Internet, I do not live in America and this was covered on TV.

And surely not all people knew about that event. The thing is I don't believe he, in particular, would ignore it and I don't trust him anyway fwiw.

Where kind in this sense means people who value the same performative morality as you do, and prefer virtue signalling over other qualities.
Being kind or not doesn't affect the quality of their software. If anything, I'd say they're strongly opinionated, something that seems to be in very short supply these days, and at times it's something to appreciate and welcome. If you want proof, such communities still draw an audience, just look at OpenBSD.
Kindness really does improve the quality of software. Look at the answers to "Why Rust?" in today's Stack Overflow post. The Rust community is opinionated, inclusive, ambitious, and kind, and produces excellent software.
Sadly, I'd have to agree. If you don't think so, try submitting a patch. They are a very exclusive group. Outsiders need not apply.
I'm on CrOS. And I feel like web based tooling is maturing to professional levels. I can give shout outs to: Piskel - for sprite generation, P5JS - texture synth and prototyping, Babylon and Three JS Editors - easy 3D modelling and scene graphs, ShaderToy - vertex and fragment shader development and debugging in webgl, Rayground - ray tracing experimentation, Nodes.io - creative coding, AudioMass - waveform manipulation. Now I wouldn't describe any of these environments as "suckless". At best maybe "experimental". But they are getting better every day ;)
It looks like suckless tools work on X. I recently made the switch to Wayland and was wondering if a similar set of tools (with this minimalist philosophy) exist. Any idea?
No. I'm guessing the main issue is that Wayland is not a replacement for X.
Back in the day, I used to distro hop, window manager hop and try to find the ever eluding "perfect" setup.

This lasted maybe 15 years. There was a sense of vanity in trying to be different yet spectacular.

Today I would tell my younger self that use what makes you productive. Even if it is the standard Windows or Mac OS environments.

R/unixporn is the nerds equivalent of shirtless beach dudes.

I agree with this. I'd been struggling with using Xmonad et. al. on the desktop for years, figuring that there was something wrong with how I was doing it, hacking on the config to get it just right. Then the pandemic happened, and I had to work from home.

So I went to ICEWM, have my terminal with Tmux in the center screen and my web browsers on my left and right monitors and that's good enough for me to be productive and get my job done.

So yeah, the perfect setup is not the one that's the coolest, it's the one that lets you get things done efficiently. Unfortunately for me, tiling window managers don't seem to do that.

> So yeah, the perfect setup is not the one that's the coolest, it's the one that lets you get things done efficiently.

My ADD makes these the same. Having a cool desktop setup is the only way I can stay interested enough to get any work done.

To be fair, IceWM is pretty cool.

No, really. It's the center of my custom linux desktop. You can run a similar setup like described in the article with it, it replaces dwm just fine. Its preferences and winoptions are powerful enough.

oh! That's good to know. I just plopped it in there because I needed to get work done, and the start menu/desktop metaphor was enough to get me moving. I haven't even changed the defaults.
I think my very first FOSS project was a config program for icewm, written in bash and with xdialog. https://sourceforge.net/projects/ice-prefer/. Horrible code of course (edit: Looking at it - not as horrible as I expected). But they might even still work, though I didn't use them in ages. ice-prefer for the settings, ice-win for the winoptions. Turns out that once my desktop was configured I didn't have much need for them. That was of course way before the current icewm fork that has a preferences menu in the start menu.

The winoptions I still recommend looking into, especially pinning apps to one workspace is very useful. That's not too far into the "configure everything" category. The concept of ice-win (clicking on a window, then having all options visible and configurable) would still be useful for that.

I found a pretty perfect setup with i3 and Xfce which is minimal but not too minimal, and perfect for my tastes. It took some hopping around to find it but now I have my dotfiles all checked in and I can get a fresh machine configured in literally under 3 minutes.

Once up, Xfce and i3 stay out of my way and I can just get to work.

I also used to distro hop for many years, and ended up settling on Debian a few years ago.

I don't consider Debian to be the "best distro" (some distros like NixOS seem much more elegant), but I find it to be very stable during the 2 years where a major release is supported, and that leaves me more time to being productive on things that interest me more.

Still, distro hopping and spending endless hours customizing and searching for the "perfect" setup can be a good hobbie.

>R/unixporn is the nerds equivalent of shirtless beach dudes.

r/unixporn is a subreddit for sharing your desktop wallpaper.

When I was a studying I also thought there is value in "finding perfect setup". That I will find that one job and I will be able to master one thing and one setup. Then workplace reality came in... One year I have to use MacBook other Windows then mix up project with a lot of linuxy stuff. One thing I learned well is to learn quick and get accustomed to different interface, different keyboard, different language. Maybe I am not writing above 80WPM but give me any keyboard and in 15-30 mins I am going to be comfortable with it.

The same with cars, get in, first 10-15 minutes of driving and after that I use important controls intuitively. I don't see value in mastering specific make of a car, it is just a tool.

My problem is that I was pretty productive with Ubuntu + Unity, significantly more than with Windows or MacOS, or other Linux DEs. This was great because Unity was the default DE for one of the most common Linux distros, so it was well-supported and easy to find information about tweaks and settings online.

But then it got killed off due to a vocal minority constantly complaining about it, and now I'm trying to find an alternative that uses similar UI principles but nothing actually seems to get it right. For example, I often hear people (computer power users) praise OS X. When I see them use it, they're mostly operating it in a "casual" point-and-click fashion like the average casual user. What made the difference for me in Ubuntu/Unity were power user features, like extensive keyboard navigation, or dragging/resizing a window with the middle/right mouse button while holding Alt, or searching the window menu simply by pressing Alt.

Disclaimer: KDE dev

Did you try Plasma? You can drag a window while holding the Win key, there are tons of keyboard navigation, and your last point can be achieved by this extension: https://github.com/Zren/plasma-hud. There is even some global themes with the look of Unity.

I'm not the person you replied to, but yes, KDE seems to be the closest equivalent. However I still miss a nicely working global menu.
There are several global menu options for Plasma, some of which I think are better than the global menu on macOS.
I tried KDE for a while a few years back and found its look quite pleasant. A problem for me was the often different paradigms from more common environments, e.g. that single-clicking a file in Dolphin opens it (as opposed to just selecting it). Another thing I remember was that just hitting the Meta/Win key did not open the launcher menu. Perhaps my expectations are a bit special since I often switch between Windows and Linux, so well-aligned usage patterns help me.

FWIW, the drag while holding a key is actually quite common in Linux DEs, I just miss it in the Big Two.

For macOS, I've been using [Hammerspoon][1] to solve the extensive keyboard navigation and resizing windows. Try checking it out. You may find it interesting.

[1]:https://www.hammerspoon.org/

I second this. There is a really good Hammerspoon plugin called Miro Window Manager that lets you easily resize windows into halves, thirds, and quarters of the screen using simple keyboard shortcuts. It really should be a standard macOS feature.

https://www.hammerspoon.org/Spoons/MiroWindowsManager.html

That's kind of what I mean, features like splitting the screen with two windows has been around in the Linux world for ages, and eventually made it to Windows too. MacOS only added something similar many years after that, I find this astonishing.
> R/unixporn is the nerds equivalent of shirtless beach dudes.

Wait, what kind of savage goes to the beach in a shirt?

For some of us it's just a public service. If I go to the beach on a sunny day and take my shirt off the glare from my belly could blind people. In low-flying planes. Disrupt migratory patterns of seafowl. Interfere with satellites, etc...
Consider using dark sunscreen in non-dazzling patterns, you lethal weapon!

:)

/me giggles

I agree, if you're trying to get something to be productive you should go with whatever gives you a good environment out of the box. But it sounds to me like 15 years ago (or whenever that was) you didn't really care about productivity but rather you just wanted to tinker with stuff for the sake of tinkering with stuff. And I think that's also valuable - there's a lot to be learned about how things work.
why not just version with git in a dotfiles directory that can be provisioned with 2-3 commands? automating this is really no overhead. (unless you change your color scheme every 2 days?).
What's wrong with being shirtless on the beach? I always thought that's what they are for?
I'm exactly the audience for this stuff. I've been using ratpoison as my WM for 15 years. But even it reads a simple config file.
I've been using the same dwm config for nearly eight years at this point. Can't beat it :)

It's followed me from Arch to Ubuntu to Void

An erratum is a correction included with an already published work. Errata are multiple corrections.

Not sure what “All of these things control various errata.“ means.

> cabytcini to show the current time and weather in my dwm bar

...

> As of the time of this post being written, it uses only 11 megabytes of ram

I'm not a rust programmer. Is 11 megs for an app like this concidered small?

Wild guess: the web client it includes is most of that. Even if it cleans up the instance of it after, the code itself is still sitting in memory, and that may be quite large. It also seems to include a JSON parser, which might be a bit large.

I'd expect something like this grabbing some dead-simple format over a TCP socket, rather than importing a Web library, to be well under a MB, certainly, and even that seems not to be setting a very low bar, to me. Though those are expectations based on C, not Rust.

I found this section ironic, since the whole point is the lack of features:

" As dwm is configured in C, there’s also a community of people creating patches for dwm that add extra features like additional tiling methods, the ability to automatically start things with dwm, transparency for the statusbar and so much more. I use the following patches..."

Eventually, enough users will want a particular patch, and it will be agreed to include for all users. At that time, is the product still suckless?

Every time I see these screenshots of tiling window managers like dwm, there is always a browser window smooshed into a block that is barely big enough for a term.

I really don't get it. Who uses a web browser like that? I almost always maximize my browser on my desktop, and when i want to share the space with something I'm working on, I maybe will split the screen in half, or just have floating windows on top of each other. Alt+tab works pretty well.

I rarely use dwm's tiling: I almost always have most things maximized with perhaps one or two floating windows. I use workspaces/tags and alt-tab to switch between stuff.

I'm not sure how representative the screenshots are of actual usage.

>I'm not sure how representative the screenshots are of actual usage.

There's a subreddit for that r/UsabilityPorn

I've noticed myself doing this with Tmux. I'll occasionally have a terminal that is essentially a thumbnail that I swap into a bigger pane. I think people doing this are making up for a lack of having a visual pager since they went minimalistic.
The way dwm works, you have a main window and you have a stack. It is normal to have windows you are not using in the stack. The small window is indeed not very useful, but it is still more than the icon used in other places.
Windows has a stack too. Most recently used on top. Older windows are either partially or completely covered, but they always have an icon accessible. Would I dedicate a section of my screen to windows down the stack? No, I don't think I would. I guess I just don't get the zen of dwm.
I have tried both workflows. I used a (very) customized dwm for years, and use windows nowadays. Windows works, but dwm is really dynamic. Screenshots don't do it justice.

With windows, once I have a large number of windows, working in several things at the same time, I'm really afraid of losing that setup (for example, leaving my laptop unattended for a while and see that the system had the great idea of rebooting while I was gone). With dwm, I had the layout I wanted with much less effort. It adapts to what I'm doing. It's very fluid.

None is perfect, both have pros and cons. And I understand some people don't like some of the design decisions in dwm like editing source to configure and so on, but dynamic window management is a powerful concept.

ya know it's funny, in my current windows 10 system, I sometimes don't notice the auto reboots, because it reopens my windows, which are usually just browsers on a normal day.
For actual use, look at r/UsabilityPorn
Nice writeup. I have spent years on dvtm and dwm. Only problem for me is that as i get older i get less interested in bikeshedding my dev setup. I get the same feel from trying to get the right mix of ui programs as trying to manage a javascript frankenstack - just too much work for little gain, and that it breaks over time.
Suckless is all about hacking your own tools. Totally unsurprising that "hacker" "news" doesn't get it.

https://suckless.org/hacking/

Most of us have been there, done that since childhood. Once you reach a certain age, it's more important to get things done and not fuss over trivialities in life.
everything is a triviality if taken sufficiently out of scope
I get what you're saying, and for a long time I managed to convince myself it was true.

But.

Looking back at my life, the things I got done barely register on the radar compared to the joy of learning and creating, the joy of hacking.

Counter point: as I get older, I find it harder and harder to put up with annoying little nags in the software I use (iow, I have less patience for crap). And boy does software today have a ton of that. I think I'm just about to cross the point where I'll dump the default gnome setup on my work laptop (ubuntu) and install dwm or cwm or whatever. Even with all the tweaking and customization, it doesn't take that long, but it makes work more comfortable every hour, every day, for years to come.

It's like ergonomics. When you're a kid, you sit on what you have and you've got more interesting things to worry about than the height of your desk? At some point in life you might just want a nice chair and roomy adjustable desk with a sizeable external monitor on a proper adjustable stand to make work comfortable. That's why you hack your window manager or shell or whatever. The defaults are always terrible and not tailored for you.

This post highlights many of the reasons why I’ve chosen to just stick with a standard, widely-used desktop OS (macOS in my case, but could easily be Windows or some other OS like Fedora), and use almost all the default settings, adapting to the defaults over the years.

Would the tiny incremental gain from tweaking one or two specific settings to my perfect liking save me anywhere near the amount of time, happiness, or productivity that I save from just letting someone else choose the defaults for me?

I don’t have enough time in my life to debug and recompile my window manager or Terminal app on a regular basis. Maybe a long time ago, when I was single and had a lot more time to burn.

But once you get used to an OS and set of tools—warts and all—I think the level of tweaks that are listed in this post are the equivalent of someone spending an hour each day prepping clothing and makeup.

For some people, that’s a fun part of their day. For me, it seems like torture.

Yeah, the closer I can get to just opening Visual Studio and pressing F5 the happier I am. I like to focus on writing software and shipping a product, not troubleshooting toolchains and figuring out config files for each piece involved. I know not everyone feels this way.
I don't think it's about wanting to focus on troubleshooting toolchains or figuring out config files for each piece involved. I think the issue generally boils down to technical-minded users being empowered to unblock themselves.

I use tools like Linux and suckless because I am sick and tired of being blocked by shoddy software failing in an inexplicable, opaque way. If something goes wrong in Windows or Mac OS X, I might be able to file a bug off to into the void, and restart everything, to work around it. There's not much other choice. It's just a waste of time every time it happens.

With software I control, whether or not it's a waste of time is up to me.

Yeah exactly; I think "how easy is it when everything works?" is just part of the total question of "how easy is it?" Another part is "how easy is it to figure stuff out if it doesn't work?" I think sometimes people forget to ask that second question. This applies to almost all software.

There's obviously a trade-off here, and no single right or wrong answer. Visual Studio is undoubtedly neat software with a lot of features that help people being productive; but it's indeed not as simple as the previous post made it out to be, IMHO, as it forgot about the second question.

Then again, if you're lucky nothing ever breaks and you win :-) But in my experience people usually aren't that lucky.

You say it like it's so simple, until your OS decides to update and then the things you've been relying on are broken, yet again, or there's some new behavior that requires getting used to. I'm surprised people think the "defaults" don't get in your way because they have for me in the past which is why I looked for alternatives.
(comment deleted)
I too like to focus on developing my software and doing my research, and am not interested in troubleshooting toolchains, tracking down config files, or messing around with computers in any way unrelated to my work.

And that's exactly why I like dwm so much: it has zero dependencies, and no config files. It just displays the windows of the programs that I actually want to use, and gets out of my way.

Right, until random builds start breaking in Visual Studio because some CSPROJ somewhere because visual studio is looking at the wrong DLL since there is no deterministic way to determine where VS will look for DLLs under many circumstances (maybe it’s looking at the GAC. Maybe it’s looking at the many various paths for Nuget. Maybe it’s looking at some of the default build paths) and picks up a random unpredictable version.

And since you can’t even look at the CSPROJ within VS without gymnastics debugging isn’t even easy to get started with.

> I don’t have enough time in my life to debug and recompile my window manager or Terminal app on a regular basis. Maybe a long time ago, when I was single and had a lot more time to burn.

I set up dwm, st, and dmenu once years ago, and have worked flawlessly without faults ever since. I actually use a stripped-down hacked-up dwm that I did on a Sunday years ago and have since lost the source for it; I can't recompile it even if I wanted, heh (which is not ideal, but I have little reason to spend effort on it).

> Would the tiny incremental gain from tweaking one or two specific settings to my perfect liking save me anywhere near the amount of time, happiness, or productivity that I save from just letting someone else choose the defaults for me?

But that's not without overhead either. If you update your Fedora or Windows you'll sometimes need to spend time getting used to new defaults and the like, especially on the long term (e.g. Windows 7 -> 8 -> 10, or if you use Ubuntu, Gnome -> Unity -> back to Gnome). With dwm, my experience has remained unchanged for a very long time.

I can only speak for myself, but your description of a hacker constantly fiddling and compiling their software couldn't be further from what I'm actually doing with suckless/dwm. Funny enough, I like it for much of the same reasons as you like Fedora/Windows: it gets out of my way so I can spend time on more important stuff.

> I actually use a stripped-down hacked-up dwm that I did on a Sunday years ago

Aha, so in some sense the software was still not totally suckless to you.

As per their own definition, "suckless" != "does not suck", but rather "software that sucks less".
All this time I thought it meant software that you didn't have to suck as much.
I also used a more minimalist self made WM based on reading dwm's source: https://github.com/serprex/nobox

The "I don't want to spend time configuring my desktop environment" argument misses the point with these things. Everyone had to learn how to use various interfaces. It's easiest for me to learn something whose code I can mess around with

The point of simple software is that it's malleable.
I removed some of the stuff I don't use because the compiler complained about it after I removed the mappings and I was sufficiently bored that day :-) Being bored was actually the reason I was even looking at dwm in the first place, and somewhat to my own surprise it seems to have stuck.

I don't like dealing with multiple things on my screen (from the WM, tmux panes, Vim windows, whatnot) and like focusing on one thing, so I've had a pretty simple and straightforward "full screen all the things" workflow for years (well before I used dwm) which doesn't demand much from my WM. I mostly use tags/workspaces, tmux windows, and Vim tabs to switch between things.

Another anecdata point:

I had the same experience with dwm, and this is the reason I keep using it.

I spent a day to set my system up a couple of years ago, and never had to touch it again. There are no dependencies, so it does not break on updates. It has so few moving parts that nothing ever goes wrong. It gets out of my way so that I can get the job done.

Moreover, I can sleep sound, not worrying about how they'll replace the toolbar with a start screen in dwm 8.0, only to change it back in dwm 8.1 after I spent the better part of the year relearning my workflow instead of doing my job.

> I set up dwm, st, and dmenu once years ago, and have worked flawlessly without faults ever since

Unless that was the first time you used those tools, how long prior to that did you spend getting to a state where you could do that?

I'm not sure if I completely understand your question, but if you mean "what kind of skills do you need?", then the answer is that you need at least decent familiarity with C, the surrounding toolset, and a general understanding of how Xorg etc. works. In general, you'll need a few years of experience.

I don't think suckless is for everyone; it's pretty explicit about that. I think that's okay: not all software needs to cater to all users; suckless is mostly a hobby project by some devs for their own purposes.

I sometimes see people recommend dwm or st in "what {WM,terminal} should I use?" and I think it's a terrible recommendation, because most of the time people asking those questions don't have the required skill set to be able to use it effectively (not yet, anyway).

I've found the key is to just do small changes and let them build over time. For instance, I recently moved to i3, and it was hard to adjust at first, but now I'm used to it, I'm a bit more familiar to starting changing config to add my own buttons. That said, and like you, I'll be sticking to defaults as much as I can, but I deal with specific pain points when they come up, rather than do the whole thing up front.
There is a really really wide gap between sticking with default settings and using suckless tools.

I use a lot of tools that I significantly customize- i3wm, tmux, vim, fish, fzf, etc. I'm certainly no stranger to editing and maintaining configs, but when I've tried the suckless tools in the past they turn everything right up to 11.

My strategy, and this is the same as a few other people I've seen comment here, is to choose a tool that has sane defaults, and only customize to eliminate pain points. If it requires significant configuration just to get it viable, than it's not going to work for me.

> Would the tiny incremental gain from tweaking one or two specific settings to my perfect liking save me anywhere near the amount of time, happiness, or productivity that I save from just letting someone else choose the defaults for me?

There are substantial privacy and security benefits to leaving the macOS/Windows ecosystem. Both of these operating systems include a lot of telemetry that is non-trivial to disable, and both use opaque, proprietary encryption software with a history of catastrophic bugs, including for disk encryption.

The big one though is spyware: Windows makes no farce of it, and is instrumented up the wazoo. You've got to dig into the registry to disable a lot of it, and firewall the rest. Opting out during install is entirely insufficient.

macOS used to be a lot better, but as of Catalina, even with all of the Apple network services disabled, iCloud turned off, Siri and location turned off, analytics opted out, no Facetime, no iMessage, no App Store, et c et c, it still sends all sorts of traffic to Apple, including some to no-hostname 17./8 IPs for some reason.

To get basic privacy on these systems, you have to do hours of work after install, run third party firewalls, and even then you're who-knows-how-many disk encryption 0days away from a stolen laptop meaning total compromise of your data.

This is not to say there aren't any encryption 0days in linux, but there are certainly a lot more eyeballs on the source, for a much longer time.

Conversely, linux doesn't really have anything comparable to Little Snitch or the per-app per-directory permissions of Catalina, sadly.

This is why I picked Fedora GNOME and stopped worrying. It gives me the confidence that it won't break and that I can focus on other things instead of having to tweak the system or environment for me to work. I adapted to GNOME defaults (I don't even use dash-to-dock) and it feels great, it doesn't get in the way when doing stuff.

Distro hopping and trying a lot of (minimalistic) tools are fine to learn a thing or two, but at some point you'll have to do some work, and having your mind on "how to do this more efficiently" can be distracting.

> This is why I picked Fedora GNOME and stopped worrying. It gives me the confidence that it won't break and that I can focus on other things

Where do you get the confidence from? Because GNOME frequently broke workflows in the past. They removed status and desktop icons, the window titles in the overview vanished, Evince lost some feature with its latest redesign (which I can't remember right now what it was exactly), Nautilus lost its two pane mode, compact view and type-ahead search, which was replaced with a slower full-blown recursive search, ...

These kind of disturbances caused me to move to a much more personally tailored desktop and I can't remember it breaking once in like 5 years and certainly not to the extend the GNOME desktop breaks in almost every release.

Usually you tune things to your liking and compile them once, not everyday.

From my own experience and talking with other suckless users this seems to be the common behaviour.

How do you "tune something to your liking" if every change makes you recompile the whole thing?
You change config.h to your liking and call `make` and you're done.
There is another dimension to it besides optimizing existing workflows. These tools are so small that you can not only tweak them but also reassemble the concepts into new tools for new workflows. Tweaking those tools is just the first step towards mastering them.

It's like knowing compilers. You don't use that knowlege to tweak c++. You use it to build your own special language when needed.

Yesterday I posted something about an emacs keybinding and someone pointed out that the command actually doesn't have a default keybinding. I set up that keybinding sometime in the mid 2000's and it hasn't changed since then. Since 2005 home many times have the defaults change in Windows/OSX/Gnome/KDE? (A lot! Gnome3, Plasma, Windows 8)

It's something you do once and then leave alone. If someone is tweaking their configuration all the time it's because they enjoy it. Changing a few settings doesn't doom you to a life of debugging and compiling.

When new developments are made in computer graphics technology or UX research, I want to be able to take advantage of them. I don't want to limit myself to a design based on the state of the art in 2006 just to avoid having to learn anything new.
What's some of the latest and greatest UX research someone might miss out on when they don't use some of the modern desktop systems?

I mean I'm not against new and better ways to interact with a computer, I just like to decide on my own if I want to use the new and shiny thing or not. Fuzzy searching is probably the most significant improvement I opted in in the last couple of years, and it's used basically everywhere on my desktop, while all the "modern" desktop systems like GNOME, Windows 10, macOS, ... still barely make any use of it and their search implementations sometimes even worsened from my point of view (Windows 10).

I can think of two major, useful new features in desktop GUIs in the last, oh, 20 years? More? And both existed before they went mainstream anyway, I think. Both are basically just search: launching programs by search (replaced program-launch menus all but completely for me) and deep search in deeply-nested menus, guiding you to the item at the current level that contains what you need (as in the macOS settings menu—I've actually not seen it done well anywhere else but I want it everywhere that kind of navigation structure exists, having seen how nice it is there)
The menu-search feature did exist in Unity on Ubuntu at one point but it was not as nice as the macOS one. I think it's a hugely underrated feature in macOS.

Another related feature that I wish some Linux gui framework would adopt is the concept of global keybindings. Every menu in every app in macOS displays by default the shortcut key next to it - if one exists.

These are the kinds of features that are easy to overlook but contribute hugely to the "cohesive" feeling that macOS advocates so often seem to have trouble describing to Linux desktop users.

KDE had global key bindings ab ovo.
Yes, that's is such a pain point in most linux setup. Even copy/pasting has not unified keyboard shortcuts (terminal). I know there are valid explanations for that, but from a user point of view this is a disaster.
Okay.... that's great. Nothing I said precludes that.

Realistically I suspect that at the end of the day the people who are getting things done aren't jumping on every shiny new trend. BUT they also they aren't spending weeks on end tweaking all of their configurations to make them perfect.

I didn't make some grand decision to use emacs (I assume mentioning emacs is what upset you). When I installed linux for the first time the instructions were to use vi or emacs to edit files. I couldn't figure out how to quit vi so after a hard power cycle I use emacs today. It turns out though that if you use a tool for long enough and make small tweaks occasionally it adds up. My environment suits me perfectly. Maybe you would hate it but that's fine too.

Whatever floats your boat. Why be so dogmatic? Why not use a little of the tried and true and mix in a bit of the hip new thing?

I'm not upset and I don't hate emacs (nor love it). I am only addressing the criticism that Windows/macOS/etc change too frequently.
We're using 50 year old UX paradigms. Nothing has significantly improved after Engelbart.
If you really believe that, then why aren't you using a 50 year old desktop environment?
I am, and so are you, I would think. That's how I understand "paradigm" :)
I didn't say, "why arent you using a 50-year old paradigm". I am asking, why are you not literally using a software developed in 1970?

For example, are you using twm? xterm? Admittedly those are only 30 years old but I don't know any older examples that are still supported.

> This post highlights many of the reasons why I’ve chosen to just stick with a standard, widely-used desktop OS (macOS in my case, but could easily be Windows or some other OS like Fedora), and use almost all the default settings, adapting to the defaults over the years.

to give my data point, whenever I was using windows I could never stop trying to change its workflow because of, well, how unefficient it seemed to me ? After years of trying various distros & DEs, building my own config based on i3, rofi, zsh and a couple other tools which took for the most part a couple afternoons, I could never see myself change for anything else again - especially not that wretched mac thing (I have one on my desk, it feels like every single interaction with that computer takes 10x the time it takes me on my main linux box which makes my blood pressure go way too high :-) )

Excuses, excuses, excuses... This is the type of mentality that turns you into a grumpy 40 year old enterprise developer who hates them kids and their fancy programming tools.
> But once you get used to an OS and set of tools—warts and all

This is the very reason I choose to configure a minimal WM, fed up of the churn and quirky behaviour of large DEs, especially the proprietary ones.

If you install DWM, or i3wm or {minimal wm of your choice}, you don't have to configure it to the nth degree like on unixporn - many of them work out of the box with sensible defaults (i3wm is known for this)... but the nicest thing of all? it stays that way, you may or may not make gradual tweeks over the years if you find a pain point, then when you reinstall or upgrade your system just take a single config file with you - done.

Compare this to macOS or windows where things just dynamically move around and change their behavior "because progress", or you re-install and have to dig through UIs to turn shit off to get back to where you were... I don't want this, I want to get shit done, I also don't want to have to relearn someone's exciting new desktop paradigm every few months at random and inconvenient times, which these days are more and more catered to the lowest common denominator of user.

Using a minimal WM does not necessitate massive time investment, it may take a little getting used to like any new thing, you can invest as much or little into customisation as you can be bothered - the biggest reward: stability, continuity, piece of mind, sanity, less distraction.

Anecdote: I last touched my i3config 4 years ago, my WM behaves the same, I use the same key commands, no new features are automatically injected on updates... zero distraction.

I feel the same way. Other than maybe adding plugins to my browser or desktop bar, the curiosity of these tiling window managers always seemed out of reach. There aren't enough hours in the day for a second job of managing an operating system.

But then I found "Regolith". There are a few distributions which have i3 out of the box, but this one had a special keybinding reminder that was one click (or keybinding) away. I was very surprised by how quickly I adapted once the barrier of entry was removed.

Once I switched funny things started happening. I wanted to slightly change the time format of the bar, and found that it was controlled by a tiny shell script. So I made my own tiny shell script that did exactly what I wanted. Eventually this sort of thing happened at lower and lower levels and I started hacking the C code and making PRs. It was really strange that the barrier between my window manager and it's code is smaller than the one between my previous desktop environment (xfce) and the new window manager. It's liberating.

All this said, when I had to use OSX at a previous company, the walled garden was pretty nice. It always worked and the usability was much better than most other environments I had used. But now that I've experienced something custom built to my preferences, I would have a hard time using something else.

> But then I found "Regolith". There are a few distributions which have i3 out of the box, but this one had a special keybinding reminder that was one click (or keybinding) away. I was very surprised by how quickly I adapted once the barrier of entry was removed.

The i3 community variant of Manjaro is also a nice config for new i3 users (I'm one of them) on an Arch derivative.

Counterarguments: tailored clothing, or at least the right fit, made of fabrics which don't scratch or itch, while being sturdy, breathable and not disintegrating during the first wash.

Using a bicycle fitting for your body with good components instead of some shabby and abused rental, which makes you sweat, so you could have jogged instead, and been as fast.

Using a swiss knife, or some other multitool for anything, while more fit for the purpose tools exist. (how often?)

Using camping cutlery instead of proper knife, fork and spoon.

Using (duct)tape to temporarliy fix installations, while avoiding/delaying a true repair.

So much more...

Anyways, happy treadmilling...

Counter-counterargument:

All this assumes the difference in utility between a specialized and a generic software tool is as stark as your examples portray. That difference is quite subjective, and arguably lesser than your examples given how much effort goes into producing modern OSes and their ecosystems.

One size does not fit all. Also i don't need a full terraforming capable colonization kit where i am.
Metaphors have the problem of being imprecise - I would say this is more like "are you using normal chef knife or your own special chef knife that nobody has?" or "are you using standard set of tools that every workshop has, or are you used to your own special stuff that nobody else has available"?

You're framing it as if the OP said "fuck fancy text editors or IDEs, I'm using notepad!" but I don't really see it that way.

As I see it, it's more like "do you really get that much gains from customizing your vim / Sublime Text / IDEA so much that you're incapable of working on someone else's machine? Is that worth it?"

I was you, 10 years ago.

Then at one day I decided to _really_ put a lot of effort on improving and highly customize my workflow.

It took a while to get used to being the fastest around my colleagues. I'll never look back.

We are professionals. The defaults, believe me, are not for us.

> We are professionals. The defaults, believe me, are not for us.

I like this conclusion

I have found that the configuration needs are all in the task. Most tasks are default-friendly by dint of harmonizing well.

The ones that aren't must be acknowledged, and attacked directly and mercilessly with automation. That could mean a bit of custom code, recording a macro for keystrokes or mouse clicks, or transforming the task into data to make it programmable or searchable.

Knowing the tools only means adding more options along these axes. Customizing the WM and editors can help, but it leans more in the direction of directionless tinkering. I develop in Windows and make use of its tiling shortcuts(Win + arrow keys) all the time - it's 80% of a tiling WM and is always there and has been there since Vista. That's the benefit of knowing what defaults can do, and "merciless automation" on top of defaults goes a long way.

Anyway, whatever editor you use, you still depend on the keyboard to type the code, the monitor to view it, and comfortable ergonomics for a long session. Identifying the best thing for the task is an art form. I recently invested in cheaper headphones(!) because they are lighter weight and therefore contribute less to neck strain; I also expect them to last longer since drop impacts will be less forceful.

> Would the tiny incremental gain from tweaking one or two specific settings to my perfect liking save me anywhere near the amount of time, happiness, or productivity that I save from just letting someone else choose the defaults for me?

I really have to hard disagree on this.

Would letting someone else choose the defaults for me save me more time (and frustration!) considering that I'd have to adapt, again and again, every time those defaults change, or would it be better to just pay that one-time cost of setting up things how I like it, forgetting about it, and not having to worry about the whole environment changing underneath me?

Sorry, but I really don't understand your argument here. How many times did the UI of macOS change? How many times did the Windows' UI change? How many times did the Android's UI change for no good reason? (Like, e.g. it seems that for virtually every new major version they completely redesign the camera app.)

In what way is it less effort to constantly keep adapting to those seemingly arbitrary changes compared to just setting it up yourself once, and then forgetting about it?

I just don't get it.

I've set up my environment many years ago, and I haven't really significantly tweaked anything since. It works the same way as it used to. Still the same tiling window manager, still the same apps, and everything works just as I'd like it. It's great. And I don't have to waste my time dealing with all of the UI churn that happens all around.

> why I’ve chosen to just stick with a standard, widely-used desktop OS..., and use almost all the default settings, adapting to the defaults over the years.

I strongly agree! It saves me time and decreases the number of incompatibilities I have to deal with. Not every program gets this treatment, but as much as possible i try not to change the defaults, especially with the OS.

A colleague also persuaded me that statically linking my binaries was the best long term approach. I started out thinking he was crazy but no, he was right.

There is a knee in any curve, where costs climbs and benefits slow.

But it still makes sense to reach the knee.

I personally think it makes sense to invest a little time in your tools when things are slow, hopefully for a payoff when things get crazy.

I think that for a lot of people like me, (over)optimising the work environment and tooling is not about productivity. It's a hobby. It sparkles joy! I like my nice setup and I'm proud that I did it myself. That's a side project on its own. Also I suspect procrastination is a source of a lot of great improvements in the tooling.
The thing I like about the suckless people and their tools is not breaking what works. Seriously, the primary problem with software today in my assessment is churn. Things change way too fast and you wonder how people get anything done as aging things are constantly being deprecated instead of being considered stabilized. I'm not really a developer (I'm a computational scientist, so I am a different kind of developer), so I'm not sure if this is my place to complain but if I had the time I'd write a whole article about it, I just don't think anyone would care to listen.

On the other hand, the thing that I do not like about suckless and the minimal hacker types in general is just the staunch elitism. I think you'll get some level of elitism with any group but in this case, with the minimalism comes a bit of a sense of hostility to new users who just don't think your way. It feels like there is no in between in the foss world, either people seem to be friendly and kind with TOCs and all that but force churn every few years or are militantly minimal and just super unpleasant as people. Then again, I think the thing I want isn't really minimalism, stability to me is the thing that is lacking greatly in the open source world which is sort of a side effect of the minimalism.

> Seriously, the primary problem with software today in my assessment is churn.

I agree. The machines are wicked fast, most of the needful algorithms are already sussed out, not to mention how ML solves another swath of problems. Today most "programming" should consist of picking and configuring existing software, and this should be seen as a big win and a sign of maturity.

(Instead we have Python 3 and Rust and... <rant omitted>)

So, yes, we need the outside view, please complain!

In re: elitism and hostility, remember that most of the old-school programmers are old enough to have grown up before nerds became cool, so some of that grows out of resentment and alienation.

Python 3 is a great example of "picking and configuring existing software". If it's not in the standard library, it's on PyPI. A lot of my Python code is just gluing together high-level functionality from various libraries. It's beautiful.

You can complain about this or that aspect of language design, but then you also have to look at what a clusterfuck of historical accidents C and C++ are.

Like what you like, but at least be correct about why you like what you like (and why you don't like what you don't like).

> militantly minimal

Thanks for a new phrase of the day, that describes the phenomenon well. At some point it can go beyond being a practical matter, and crosses over into fashion and dogma.

> the primary problem with software today..is churn

> stability..is lacking greatly in the open source world

This makes me think, there's a difference between minimalism and simplicity. Software that's stable, backward compatible, with a small and well-defined interface - there are rare gems out there that achieve this simplicity, where it can be used every day for years and just works like a champ.

The author primarily uses an iPad Pro, a dedicated remote server, and most work done with ssh, tmux, and Emacs. That is a simplified work environment!
I'm getting ready to move toward something like that, but with VMs for each sort of work or task I'm doing. My reasons:

1) I'm leaving Mac hardware for "pro"-tier computing because their gear's swung way back into ZOMGWTF overpriced territory, especially if you want higher-than-basic-but-still-not-actually-that-much core counts, memory, or disk, while also getting worse in some ways (mostly the MBP line), and not keeping up with what ought to be standard base specs for "premium" hardware. I'll keep buying used Apple gear as terminals and light farting-around machines, and iPads are still the only tablets worth a damn and I use them for tons of stuff, so they've still got me for their iOS devices.

2) No software platforms support suspend/restore-this-entire-desktop-session, with multiple sessions available at once (and the ability to run more than one at once), which is an incredibly productive way of working for me short of having a dedicated machine for every purpose (which would be worse in a lot of ways anyway), so the only way I can get something like that is with a big-assed desktop machine with 4x as much RAM as any one of my tasks/sessions needs, running VMs. I'd rather just be able to suspend and resume user sessions, including desktop and application state, as a native OS feature, as that'd save me the PITA of keeping multiple VMs around and up-to-date and all that—alas, no platform supports that.

[EDIT] for the latter, if it's not clear, think "client 1 session", "client 2 session", "side-project 1 session", "side-project 2 session", "gaming session" (probably can't do that one with my set-up as I don't want to screw with gaming in a VM), "book 1 writing/research session", "porn session" (LOL), all isolated and able to suspend/resume from exactly where they were.

Using mosh instead of ssh, and tmux named sessions I get something like your different sessions.
Yeah, that works great for terminal programs as long as you leave everything running somewhere and there are even ways to kinda do what I want in the browser using groups of bookmarks as "sessions", it's just everything else that's the problem.