_________________
|   ______________|
|  |______________
|______________   |
 ______________|  |
|_________________|

Why I use suckless tools

As you may know as my window manager I use dwm, my terminal is st, and to launch other programs or scripts I run dmenu. If you don't know any of these you should really check them out and here's why.

suckless.org - Suckless website

1. It does what it is supposed to do

AND NOTHING MORE.

That's, I think, the most basic rule about suckless software. So the idea is that the less features, less code the less bugs are in the program. Errors are everywhere and probably nothing can change that. So with suckless mindset software should be as simple as possible, so it won't have a chance to break. That's why dmenu just makes menu, dwm just makes windows show, and st just run the shell.

2. Small codebase

This is correlated with previous point. As software has less features, so less lines of code are written. And because of that, it's really easy to understand the source and modify it by your needs. This is also useful when you want add new features, but more on that later.

3. Source is the config

Suckless software does not have config files. Why is that? Should window manager parse text files or manage windows? Or maybe should terminal parse text files or run shells? But lack of any option of configuration is pointless. That's why every suckless project has `config.h` file where every modifiable option is and can be changed. If you want to change something, you need to edit `config.h` and recompile the program.

I also found it helpful when by accident deleted all my dotfiles - suckless programs kept unchangingly running as all the configuration needed lived inside the compiled binaries. But that's not really the case.

4. It does what you want it to do (patching)

This one's my favorite. The concept is that you start with a basic program, for example let's take st. st is a terminal emulator, so by default it just runs your default shell program, takes input and displays output. But, if you like me, use your terminal not just to show your "pentagon hacking" skills with `ls -R /`, then you might find st a little bit too bare. You probably would like to be able to scroll in your terminal. Yes! st doesn't have scrolling by default! Less code, less bugs, etc. Well, in that case you might think that this st terminal is useless.

Wait no more, because I'm introducing you to the concept of patching! You take this st and you select what features you want to have in your terminal. You'd pick scrolling, probably some fancier font, transparent background is cool so you might want that too... I don't know what more, check yourself:

Patches for st

I don't want to make a patching tutorial here, so to give you little glance how it looks, it's something like this: you download patch, you apply it on the st source code, and you reinstall from new source. Done! It may be a little vague but hopefully you get the idea.

So to sum up, suckless software is lightweight, does only what it's meant to do, but also is easily and highly customizable. It's just simple and that's what I like the most about this whole concept.