I love the suckless philosophy, but their tools are very hit and miss.
st is my favorite terminal, and I use it daily. It crashes from time to time, but it's manageable.
I used surf as my main browser for a few years, until it refused to compile with the latest WebKitGTK a couple of years ago. I switched to Luakit, and have been mostly happy with the transition.
dwm was unusable for me the few times I tried it. It would crash constantly, and it just doesn't have the features of other lightweight WMs, even with all the patches. I settled on bspwm many years ago, and it's been rock solid.
rofi is better than dmenu. sxlock is better than slock.
I think OP will hit many roadblocks with this all-in suckless approach. There are better tools out there that are similarly lightweight, but with much better UX. You can save yourself many headaches by being pragmatic, and using the right tool for the job.
Good for you. I've experienced them plenty with urxvt[1], and now occasionally with st. I'm pretty sure the st crash is due to a patch, but I've just been lazy to fix it. It's rare and not disruptive enough, so it's tolerable.
[1]: Enough to make me stop using urxvtd, which took down all my client terminals with it...
The tools can be hit-or-miss, but where was dwm crashing? I've used it for over a decade with few issues. Your issues were probably with a patch or combination of patches.
Out of curiosity, what features were you missing? The point of dwm is to make it easy to write your own features (though the "easy" part might be a bit questionable at times).
It's been a few years since I tried it, so I don't recall the details, sorry. I did use some patches, so that could've been it.
That's the thing with suckless tools; most of them are barely usable without any patches. And the patches are distributed on their site, with no guarantees whether they'll apply cleanly, or have conflicts with other patches. Your best bet is to take over maintenance yourself, or use someone else's fork.
I do appreciate the barebones philosophy, but I just don't want to maintain my own window manager and web browser. The tools are only usable if you don't need much functionality, and only apply a few patches.
What would be convenient is if these optional patches were part of the main repository, and kept up-to-date with the main branch, and I could easily select which ones I want to build with, get conflict warnings, etc. This wouldn't stray too much from their philosophy, but would give a much better UX. It would add some burden on the core team, and improving UX isn't really their goal, so I'm clear this will never happen. I'll just keep using other tools that do prioritize this.
The source code is very approachable too. It's the simplest terminal program I could find. Highly recommended for anyone who wants to see how it works or make their own.
The thing is that your dwm likely wasn't my dwm. I don't remember which patches I applied, or if I introduced a bug that made it crash. I gave it a try from scratch several times, possibly with different patches each time, and always reached instability issues.
Maybe it's a sign that suckless tools aren't for everyone, and I'm certainly not an experienced C programmer, but that's the effect of asking your users to also be maintainers of the software.
>>Software with a focus on simplicity, clarity, and frugality.
>The developers also pride themselves on catering to advanced and experienced computer users,
But, no. It's a drumbeat of less code and fewer features. Which is only simple in a specific worse is better sense and frequently infrugal because efficiency would require more code.
Advanced and experienced computer users are not catered to, not catering to anyone who might need a feature is their whole schtick.
Less code, with fewer features iff combined with well written code is often better than more featureful code for advanced users as it is a better place to start modifying the code into what you need. So instead of a generic tool with tons of features, a simple tool that is simple to modify. Advanced tools have their place as well (eg. ffmpeg). IMO each has it's pros and cons but I wouldn't say one is necessarily superior to the other.
Can't we have both? If the code is modifiable/scriptable enough, we could get more feature, speed, reliability, than with huge codebases. I don't know if it is one of their goals tho.
> The developers also pride themselves on catering to advanced and experienced computer users, which is actually a refreshing take in my opinion
Am I too old?
My first linux install took me days to get to the point of showing a desktop. Not catering to advanced users is the novelty in the linux world imo - and it’s not entirely there yet.
The entire industry is obsessed with onboarding and first-experience ease and intuitive interfaces and making things "just work", etc, etc. This includes Linux, which still has rough edges but the approach of just making things simple instead of easy and aiming at advanced users is very rare these days.
My first (arch btw) linux install it took me a whole week to install correctly in the first place, yet to show the DE. This was with prior experience working with linux. I personally liked that it was complicated since it was a good learning experience (much better than the oversimplified Ubuntu install anyways)
Arch makes things complicated by not having defaults. Leaving the user to pick a network management tool, partitioning scheme, many other things. It's all very well documented and aimed at understanding one's system. I give them that. But in some ways it seems to be intentionally complex for the sake of it. And the one thing I did want to change: systemd, is the one thing you can't. It took me 2 days to get a desktop running and I still ran into weird stuff.
On the contrary, FreeBSD also dumps you on a command line. But it does have defaults for most things and it took me only a few hours you set up because everything is guided better with the defaults in mind.
I really like the idea of a stable base OS with rolling software also, and the ports collection (which is quite similar to the AUR). But there's more ways to do manual and arch's isn't necessarily the best IMO.
If you like having a "complicated" install, why not install Debian manually using debootstrap? It's pretty much the same thing, but it leaves you with a much better supported system afterwards.
While I agree with the basic idea, it seems that in practice it's been taken over by ascetes who throw the baby out with the bath water and impose pointless restrictions on themselves just for signalling.
If you want software to have less complexity, you don't choose a language which gives you options, you choose one which removes ways to make mistakes. That means, emphatically, not C. You don't have to choose Rust, which is complex indeed, but allows your code to be less difficult. If you want strictness, choose Haskell. Or maybe go the middle way and do OCaml. Or maybe Ada.
I don't understand how the suckless community goes from "vulnerabilities are commonplace" and calling out masterminds to writing C, which is famously difficult to code without stepping into undefined behaviour.
Or maybe I do: this checks out if minimalism is more important than vulnerabilities and simplicity.
Similar criticism can be applied to sticking to X11 compared to Wayland, regarding vulnerabilities (any application can see any other) and performance (any application can block the entire server - try ssh -X on a high latency connection to see).
Suckless.org programs are simple enough that RIIR ought to be an actually viable strategy. Why not just try it yourself, if you're that concerned about safety?
Suckless can work well if you do things alone and uniquely within text, but when it is time to collaborate in three-dimensional space, you'll find yourself hiding your cringe "Suckless" desktop like a dirty little secret on TTY2. Because who wants to be that guy in the office? Imagine swiveling around to a bewildered colleague, who just watched you struggle to zoom in, scroll down or resize a window. Imagine having to explain to them what they're looking at.
Suckless also leads to wild misconceptions about your ability. It has the minimalist and snappy aesthetic of a hacker wunderkind's monitor, even though you're secretly doing equivalent work to everyone else within this setup, often at a reduced rate due to compatibility issues with the rest of your department. So what then? People start saying things like, "Oh, that Mike really knows what he's doing. Have you seen how bonkers his screen looks?" That's a lot to live up to.
Here's an interesting experiment: Pick a random Suckless fanboy on YouTube. Skim through one of their videos. Then skim through another video from 9 months before. Notice how everything about their work-setup constantly changes. These guys never learn to let things lie, never learn about the power of habits and the unique human ability to adapt to almost any interface, rather than forcing their immediate surroundings into a narrow stencil. Flow with it.
I think you're missing the point of why most people choose suckless and similar tools.
Those missing features you mention _is_ the appeal. If, and when, they need a specific feature, they'll add it by making another minimal change to their setup, or try to avoid it altogether by reusing an existing tool.
The fact these tools are snappy and outperform most larger tools is also an appeal. I'm sure that same person you mention can do things in a fraction of the time it takes someone using standard tools.
Sometimes this can be seen as a compromise by others, but it's not due to some radical stubbornness, or a desire to do things differently. They just prefer not using off-the-shelf tools, and conforming to how someone else—or even worse, a committee—decided they should use computers.
It's like people who prefer minimalism in their everyday life, or those who DIY everything rather than buying pre-built products, or those who choose to live off-grid. Sure, there is an aspect of struggle, but it's something that comes with that way of life, and it's a welcomed part of the experience.
This is why suckless is more of a philosophy than just a collection of software. It's not meant for everyone, and it will never be mainstream.
I actually do use suckless tools, so I don't think I missed these points. I've read them many times over the years in fact. I've used i3 (which is quite suckless) and dmenu for a good while, mostly out of habit at this stage, and I've basically come to the conclusion that I mistakenly looked up the to the wrong people many years ago, and mistook confidently spoken dogma for wisdom. Snappiness and "outperformance" in the suckless world are usually defined via memory footprint, which is basically just metric Gerrymandering. You pay for that unremarkable performance edge by severely degrading your personal performance on teams, on other people's machines and in movie night situations when you're the only person who can control your esoteric computer.
I bought into the whole "do the minimal changes when they arise" thing for many years, but then I realised I was basically just slowly rediscovering what had already been discovered by plenty of others before me: the bundled desktops work fine, and they are not really the problem. The problem for me was actually just a need to feel in control while other things in life felt out of my control. That's probably why I still haven't kicked all suckless stuff entirely. But I would never advise anybody else to go down the suckless path. There are so many better hobbies to explore out there, incidentally so many hobbies that will put you in circles that are more enjoyable company than the suckless circles. Slowly iterating on your own personal set of keybindings and scripty doodads is the digital equivalent of spending an evening playing single player solitaire, except much less challenging.
> Notice how everything about their work-setup constantly changes. These guys never learn to let things lie, never learn about the power of habits and the unique human ability to adapt to almost any interface, rather than forcing their immediate surroundings into a narrow stencil. Flow with it.
It could also be that their circumstances changed and they adapted their setup accordingly? A good non-opinionated workflow does that. I really hated the way I could not customise macOS' desktop to my preferences (and that they kept changing their preferences on me) so I moved to KDE which has a lot more choice. Now I change settings regularly as I need.
For the programs I most frequently launch from my desktop, I have hotkey sequences that do a switch-to-this-program-window-or-start-the-program-if-not-running. For the remaining programs, `dmenu`.
(I've tried using i3wm for a year, and tweaking my config of it, but going back to xmonad is always a relief. The one thing I like better about i3 was that I got the autohide system tray working how I liked it, which was better than I've done with xmonad.)
st is my favorite terminal, and I use it daily. It crashes from time to time, but it's manageable.
I used surf as my main browser for a few years, until it refused to compile with the latest WebKitGTK a couple of years ago. I switched to Luakit, and have been mostly happy with the transition.
dwm was unusable for me the few times I tried it. It would crash constantly, and it just doesn't have the features of other lightweight WMs, even with all the patches. I settled on bspwm many years ago, and it's been rock solid.
rofi is better than dmenu. sxlock is better than slock.
I think OP will hit many roadblocks with this all-in suckless approach. There are better tools out there that are similarly lightweight, but with much better UX. You can save yourself many headaches by being pragmatic, and using the right tool for the job.
[1]: Enough to make me stop using urxvtd, which took down all my client terminals with it...
Out of curiosity, what features were you missing? The point of dwm is to make it easy to write your own features (though the "easy" part might be a bit questionable at times).
That's the thing with suckless tools; most of them are barely usable without any patches. And the patches are distributed on their site, with no guarantees whether they'll apply cleanly, or have conflicts with other patches. Your best bet is to take over maintenance yourself, or use someone else's fork.
I do appreciate the barebones philosophy, but I just don't want to maintain my own window manager and web browser. The tools are only usable if you don't need much functionality, and only apply a few patches.
What would be convenient is if these optional patches were part of the main repository, and kept up-to-date with the main branch, and I could easily select which ones I want to build with, get conflict warnings, etc. This wouldn't stray too much from their philosophy, but would give a much better UX. It would add some burden on the core team, and improving UX isn't really their goal, so I'm clear this will never happen. I'll just keep using other tools that do prioritize this.
The source code is very approachable too. It's the simplest terminal program I could find. Highly recommended for anyone who wants to see how it works or make their own.
Maybe it's a sign that suckless tools aren't for everyone, and I'm certainly not an experienced C programmer, but that's the effect of asking your users to also be maintainers of the software.
>The developers also pride themselves on catering to advanced and experienced computer users,
But, no. It's a drumbeat of less code and fewer features. Which is only simple in a specific worse is better sense and frequently infrugal because efficiency would require more code.
Advanced and experienced computer users are not catered to, not catering to anyone who might need a feature is their whole schtick.
From another side of things, I want my SO to be able to use my computer if they need to, and suckless software just puts a huge block in their way.
All said, I'm perfectly happy with Arch Linux and GNOME.
Am I too old?
My first linux install took me days to get to the point of showing a desktop. Not catering to advanced users is the novelty in the linux world imo - and it’s not entirely there yet.
The entire industry is obsessed with onboarding and first-experience ease and intuitive interfaces and making things "just work", etc, etc. This includes Linux, which still has rough edges but the approach of just making things simple instead of easy and aiming at advanced users is very rare these days.
Dead Comment
On the contrary, FreeBSD also dumps you on a command line. But it does have defaults for most things and it took me only a few hours you set up because everything is guided better with the defaults in mind.
I really like the idea of a stable base OS with rolling software also, and the ports collection (which is quite similar to the AUR). But there's more ways to do manual and arch's isn't necessarily the best IMO.
- I like Suckless
- I like Alpine
- I like Void more now
- Here's a script
If you want software to have less complexity, you don't choose a language which gives you options, you choose one which removes ways to make mistakes. That means, emphatically, not C. You don't have to choose Rust, which is complex indeed, but allows your code to be less difficult. If you want strictness, choose Haskell. Or maybe go the middle way and do OCaml. Or maybe Ada.
I don't understand how the suckless community goes from "vulnerabilities are commonplace" and calling out masterminds to writing C, which is famously difficult to code without stepping into undefined behaviour.
Or maybe I do: this checks out if minimalism is more important than vulnerabilities and simplicity.
Similar criticism can be applied to sticking to X11 compared to Wayland, regarding vulnerabilities (any application can see any other) and performance (any application can block the entire server - try ssh -X on a high latency connection to see).
Nah it does not. If minimalism is more important than vulnerabilities and simplicity you use forth, or an advanced assembler.
It's dunning kruger.
Suckless also leads to wild misconceptions about your ability. It has the minimalist and snappy aesthetic of a hacker wunderkind's monitor, even though you're secretly doing equivalent work to everyone else within this setup, often at a reduced rate due to compatibility issues with the rest of your department. So what then? People start saying things like, "Oh, that Mike really knows what he's doing. Have you seen how bonkers his screen looks?" That's a lot to live up to.
Here's an interesting experiment: Pick a random Suckless fanboy on YouTube. Skim through one of their videos. Then skim through another video from 9 months before. Notice how everything about their work-setup constantly changes. These guys never learn to let things lie, never learn about the power of habits and the unique human ability to adapt to almost any interface, rather than forcing their immediate surroundings into a narrow stencil. Flow with it.
Those missing features you mention _is_ the appeal. If, and when, they need a specific feature, they'll add it by making another minimal change to their setup, or try to avoid it altogether by reusing an existing tool.
The fact these tools are snappy and outperform most larger tools is also an appeal. I'm sure that same person you mention can do things in a fraction of the time it takes someone using standard tools.
Sometimes this can be seen as a compromise by others, but it's not due to some radical stubbornness, or a desire to do things differently. They just prefer not using off-the-shelf tools, and conforming to how someone else—or even worse, a committee—decided they should use computers.
It's like people who prefer minimalism in their everyday life, or those who DIY everything rather than buying pre-built products, or those who choose to live off-grid. Sure, there is an aspect of struggle, but it's something that comes with that way of life, and it's a welcomed part of the experience.
This is why suckless is more of a philosophy than just a collection of software. It's not meant for everyone, and it will never be mainstream.
I bought into the whole "do the minimal changes when they arise" thing for many years, but then I realised I was basically just slowly rediscovering what had already been discovered by plenty of others before me: the bundled desktops work fine, and they are not really the problem. The problem for me was actually just a need to feel in control while other things in life felt out of my control. That's probably why I still haven't kicked all suckless stuff entirely. But I would never advise anybody else to go down the suckless path. There are so many better hobbies to explore out there, incidentally so many hobbies that will put you in circles that are more enjoyable company than the suckless circles. Slowly iterating on your own personal set of keybindings and scripty doodads is the digital equivalent of spending an evening playing single player solitaire, except much less challenging.
It could also be that their circumstances changed and they adapted their setup accordingly? A good non-opinionated workflow does that. I really hated the way I could not customise macOS' desktop to my preferences (and that they kept changing their preferences on me) so I moved to KDE which has a lot more choice. Now I change settings regularly as I need.
For the programs I most frequently launch from my desktop, I have hotkey sequences that do a switch-to-this-program-window-or-start-the-program-if-not-running. For the remaining programs, `dmenu`.
(I've tried using i3wm for a year, and tweaking my config of it, but going back to xmonad is always a relief. The one thing I like better about i3 was that I got the autohide system tray working how I liked it, which was better than I've done with xmonad.)