/suckless/

Discuss about suckless software

Attached: 800px-Suckless_logo.svg.png (800x522, 3K)

Other urls found in this thread:

wiki.installgentoo.com/wiki/Software_minimalism
github.com/coreutils/coreutils/blob/master/src/cat.c
github.com/openbsd/src/blob/master/bin/cat/cat.c
git.suckless.org/sbase/file/cat.c.html
github.com/qrush/unix/blob/master/src/cmd/cat.s
alpinelinux.org/
github.com/sabotage-linux/sabotage
git.2f30.org/morpheus/log.html
github.com/michaelforney/oasis
lists.suckless.org/dev/1905/33482.html
troubleshooters.com/linux/surf.htm
cs.princeton.edu/~bwk/btl.mirror/
twitter.com/NSFWRedditGif

they arbitrarily limit the numbers of lines someone can use in their program in the name of "bloat"

Is this a new thing you guys are doing?

Based just like ncurses.

The "S" is for Shit.

suck this shit so my intestines can be bloat free

I used sbase, ubase, 9base, st, surf, and dwm.
all are excellent the shilling against it is by people who tried it for a week and couldn't into the genius of the design.
>muh lack of features
>muh performance
>muh terminal latancy
all bullshit
you can do everything bloated solutions can with smaller tools, but the shills can't into awk, sed and pipes
the performance is way better than the commonly shilled bloatware alternatives.
and terminal latancy was worse on urxvt which was more complicated slower and used more memory to do exactly the same thing.
I switched to suckless tools and I have a more robust, bug free system which is easier to use.
wiki.installgentoo.com/wiki/Software_minimalism
take the minimalism pill

Attached: VoidLinux_T420BLAZEIT_Wed_May_15_20:27:25_2019.png (1600x900, 760K)

i3 is bloat, use dwm

Having a separate thread for suckless is bloat.

is it weird that i want my master/ stack layout to be mirrored instead of the default?
how do i do this?

Attached: dwm.png (650x408, 29K)

i need to become proficient with sed and awk.

what are sbase, ubase, and 9base?

I'm not a user of suckless ptogs and such my opinion is kinda invalid but whatever. Suckless guys say that they're doing the minimal progs, but their minimal is slower than fucking bloated xterm. That kinda sucks. Then, what's the point of surf when there's lynx/w3m? Dwm is the only good piece of software.

Lean as hell

user, what are you using for transparency on borders?, I don't touch my config.h for a while now

What pape is that

find a patch or edit the source code

ncurses is shit tho, it lacks a good documentation, it's inconvenient (check colors), the code is so complex that it almost looks obfuscated also the styling of code and function naming sucks.

sbase, ubase, and 9base are a part of suckless core. They replace the gnu userland, in the sameway that alpine uses busybox instead of GNU coreutils.
9base is a port of some 9front tools.
xterm faster than st? I've used several terminal emulators (gnome-temrinal, urxvt, terminator, xterm, to name a few) and st is the fastest. You probably have your reasons for not but I'd give some of the suckless tools a shot.
I'm using the st build from lukesmith's github from a few years back since I haven't gotten around to patching the latest st version, my compositor is compton.
I also I changed
static const int resizehints = 0;
in dwm's config.h
to get fullscreen st to fillout my entire screen
I can post some paste links if you want so see my configs.
It was a bit hard to find for free (as in free beer) since the artist hid it behind a paywall on deviantart. Pic related is the original.

Attached: pape.png (1280x853, 944K)

Thank you very much for the wallpaper, user.

fucking crap. cannot even display antialiased fonts

Deluded GNU/Linux fanboys, see, this is how you take the suckless pill:
GNU cat(1) > 631 sloc
github.com/coreutils/coreutils/blob/master/src/cat.c
OpenBSD cat(1) > 230 sloc
github.com/openbsd/src/blob/master/bin/cat/cat.c
sbase cat(1) > 45 sloc
git.suckless.org/sbase/file/cat.c.html
And the original, the earliest version of cat,
probably writen by both Ken and Dennis (UNIX V1 on PDP-11, pic-related) > 59 sloc
github.com/qrush/unix/blob/master/src/cmd/cat.s
The sole purpose of cat in the beginnig was that: / cat -- concatinate files
You don't need more if you know how to use pipes and redirection properly.
Any of you can make this comparison with any Unix utility across any of its implementations,
and if you are smart enough, I suspect, a pattern would arise, and two questions begin:
- How was it that all these programmers were able, for so long (+50 years), to do such great things, using minimal and memory efficient programs? and,
- Why many "unix-like" systems still relies on bloated, overtinkered and poorly written implementations of these original programs (GNU Coreutils and such)?
Hundreds of Linux distributions and still none that successfully threw all the GNU junk overboard, well, there is motivation enough:
alpinelinux.org/
github.com/sabotage-linux/sabotage
git.2f30.org/morpheus/log.html
github.com/michaelforney/oasis
Or just give OpenBSD a shot, you'll be fine.

Attached: Ken_Thompson_(sitting)_and_Dennis_Ritchie_at_PDP-11.jpg (1024x820, 124K)

You are supposed to do one thing well and only one thing. If you have a feature to implement, make a separate project. Users can choose what they want to avoid bloat.

>fucking crap. cannot even display antialiased fonts
translation: I spend all day ricing my computer.
There's a patch for that.
but does it really matter? does the lack of antialiased fonts change readability at all? Does having anti-aliased fonts improve usability, perfomance or do anything by any metric?
No it's only use is to stroke your ego in font rendering threads.

Ah, windowless desktop... Brought to you by the "My PC Isn't a Tablet" team who bitched about metro design language.

I still wonder why sbase cat has the -u option. It was only added in research unix v7 and removed in v8. There should be no reason to keep it around.

metro sucked because it still relied on a mouse. And was (poorly) designed as a touch interface first and formost and a standard desktop interface second. My main interface with dwm is the keyboard and because of that all of the functions in a normal gui would be redundant.
This is the usual mode of operation in a window manager.
By having very small boarders I use my screen area more effectively which is really nice on a laptop where screen area is at more of a premium.

Actively bad for software development. You can't just call entire programming paradigms, and every OS bloat.

I'm sort of new to this minimalist suckless culture and I'm fascinated by it. It just works. It does exactly what it says it will do, it's easy to build and extend, it's no bullshit and no frills. I like it.

>le old loc argument
And yet the GNU utilities are faster, safer and have more features. How come?
It's almost as if more code can actually be useful and not just "bloat".

>does the lack of antialiased fonts change readability at all?

Yes, it does. Significantly. Dramatically.

Also, when I have all the nice things, such as Emacs, Vim, Evince and Chrome (yes, Chrome) relying on Xft and GTK3 (well, I could compile Emacs --with-x-toolkit=none, like Chrome nowadays) but it is insignificant) it would be rather pretty stupid to try do get rid of all this useful and good-enough (yes, GTK3 and freetype are good-enough) tech for the sake of some bullshit misunderstanding which is what suckless is.

Essentialism does not imply bare minimalism. Japanese aesthetics , lets say, is not the same as "primitive tech" movement, where you dig holes with sticks and use rocks as hammers.
Similarly, I will never buy primitive technology such as plain X11 and bitmap fonts, but rather would make a balanced desktop with uniform fonst, theme, etc. which is actually what I did long ago, so all my visual experience is consistent and pleasant in all major task - browsing shit, reading of pdf and djvu documents, writing of texts and programs.

So, fuck off, incel, grow some brains.

Suckless is the logical conclusion of Eunuchs philosophy retardation.
Purposefully crippled software that relies on a retarded extension mechanism (PATCHING) because C sucks so much it can't into proper extension methods such as modules.

Suckless is a meme, and a very bad one.
Their approach to "minimalism" is extremely naive, and it boils down to "make software small and with little features", thus merely treating a symptom and not the cause.
Suckless software is not bloated only because it's small: if you actually take a look at the code itself (especially dwm) it's a complete mess. Plus, it would unironically be better organized if it were written in C++ considering the structure.
The existence of Suckless really highlights the false dichotomy many people believe in in the software world: It's either bloated, slow, unnecessarily complicated software or software that is small, but lacks so many features that you're effectively crippling yourself for no reason other than "minimalism" for its own sake.
Luckily, there is a third way: software that is well-designed, modular, featureful and possibly large, but by no means "bloated", because that size is there for a reason. Emacs is a prime example of this third way. And for an example comparable with a similar Suckless project (also one which it directly descends from), xmonad.
And whenever you worry about something "not following the Unix philosophy" stop for a moment and reflect whether the "Unix philosophy" is even worth following for your case (in many cases, it really isn't).
Also, and this is less relevant since it's an observation about the people rather than what they actually did, they have a complete misunderstanding of important computer science concepts such as separating an abstraction from its implementation, which is unbelievable for people with supposedly years of experience in the industry.
Their _founder_, for example, unironically advocates for starting to teach _programming_ to kids by _teaching the Von Neumann architecture_: lists.suckless.org/dev/1905/33482.html

Attached: e0c2cf417d4f0a96bab909c4f20efd2e.jpg (800x1200, 148K)

>You can't just call entire programming paradigms, and every OS bloat.

Attached: sucklessthatswhereyourwrong.png (502x355, 9K)

>have more features.
non shit coreutils would just write more programs for more features, not add a million new "features" to existing programs.

>opening 10 pipes and 10 executables to output serialized text from one aonther and have them all parse it again is less bloated
Heal yourself, the Eunuchs philosophy is mental disease.

>faster
jury's out on that one
>safer
define "safer" is having a larger attack surface safer? Is having more bugs and nondetermanistic behavior in gcc safer?
>more features
I can do everything you can with the GNU userland using suckless core. All those features are added with extra bugs, security vulnerabilities and size. The code base being bigger makes it harder to maintain and increases the attack surface.
more code is bloat when that code doesn't do anything new.
oh no he called me an incel how will I ever recover.
If you think you need Xft and GTK3 no skin off my back, it's not my system.
I just prefer having a minimal system after doing the same exact shit you're doing.
It really makes my life easier.
t. voluntarily celibate unix admin
wow this software is fast and isn't buggy with bloatwareshit """features""" that no one needs added in, if only I could figure out how to use it... No I'm not the problem it must be crippled.
This wasn't made for you then, no need to protect your ego just because you don't get it, that's fine just use whatever you want.
>using emacs as an example of sane software design
emacs is bloat though, it doesn't do anything new or novel compared to having separate programs. Separate programs are also more modular, the entire unix environment is designed to be modular some people seem to think it's better to reinvent the wheel but I've yet to see anyone do a better job.
the only thing those prorams do is make them retard proof, you don't need to understand the system or know what you are doing, so you get linux sys admins who have no idea what the fuck they are doing thinking their experts. Nothing is more dangerous than an idiot "expert."
I'm not saying software like that doesn't have it's place but suckless software also isn't for your grandma to use so keep your bloat trainingwheelsware where it belonds and I'll make sure not to confuse grandma with suckless software.

why are you so mad user?
where did unix hurt you?
You know no one expects you to chnage what your doing right?
Did you have some problems with this before?
Some might judge you silently for being a brainlet but we won't bite.

I'm interested in surf, but I need something like umatrix to keep myself sane. How do I do it? is it even possible?

Well, you really did your homework, and are preaching the practical aspects of the UNIX philosophy, such as isolation, molecularity and doing a single task well (which are, if you think, the same universal principles behind Functional Programming and all the nice things).

However, you do not understand Emacs. Emacs is an applied philosophy itself. It is layered DSLs in a decent, proper language - no type clutter, first-class everything, homoiconity, etc,etc. Emacs is a real miracle of software engineering. The only problem with it - it is bloated with crappy code of very ambitious but not appropriately smart amateurs, who think they know how to do it better and how everything ought to be done. Aside from that Emacs is perfect and worth of worship.

>define "safer"
More checks. "Smaller surface" is irrelevant when said surface is brittle.
>I can do everything you can
I can also do everything using punch cards and an old mainframe
>All those features are added with extra bugs, security vulnerabilities and size.
False implication, shilled by Suckless and cat-v. Besides, there is nothing wrong with size.
>The code base being bigger makes it harder to maintain
Suckless codebases are a fucking mess. They are "not bloated" only because they are small, but the code itself is shit and often looks obfuscated.
A well designed, modular 100k LOC program is better and easier to maintain than a 50k LOC messy monolith.
>more code is bloat when that code doesn't do anything new.
Except that code does do something new. Have you _actually_ looked ay the GNU coreutils? They use more sophisticated algorithms than the alternatives, and that's why they are faster.
>wow this software is fast and isn't buggy with bloatwareshit """features""" and blah blah blah
The point is that extending it is retarded. Look at how Xmonad does it when compared to dwm. Look at what proper extensibility looks like.
Besides, shit such as choosing to drop Xft support starting from the next release _is_ purposefully crippling functionality, as it adds almost nothing to the code (it relies on widely available libraries).
Did you even read the posts you reply to?
>emacs is bloat
You've never used it, I'm not even going to bother reading the rest of your ramblings. Also
>unix was """designed"""
I bet you don't know how /usr/ originated.

Your entire premise, in this entire thread, is that "more code = bad, less code = good". I'm telling you that this is a false premise.
Besides, using C, which requires a lot of code to do anything useful, is counterproductive to this goal, so it's amusing to see Suckass/cat-v apologists defend their doublethink.

Unix didn't hurt me. It hurt CS research for 50 years.

Staying sane is bloat.

Attached: uriel1.png (853x621, 87K)

what the actual fuck am I reading?

I used emacs myself a very long time ago.
I prefer vi like environments.
vim and emacs share some design aspects that have issues that become more apparent the longer you use them.
It's an issue inherant to having an isolated environment.
emacs and the linux kernel share the same concept of modularity as far as I can tell my issue with emacs is that it's environment really tries to do everything, not necessarily well or better just everything.
I can see why people like it. It's just not something I'd say is better than having separate programs because it simply because it isn't.
That's okay for some people though and that's alright. I'm not out here trying to tell people tey have to use something they don't want to.
more is more
the fact is that a large code base is a larger attack surface, and will have more bugs and security vulnerabilities. This is basic knowledge.
suckless programs are easy for me to understand but I'm not everyone so if it's hard for you that's okay.
GNU added a ton of options to their coreutils that replicate functions that already existed in sed or awk or by just using pipes and redirects I wouldn't call that sophistication I call that training wheels.
Xft isn't necassary, if you want that functionality fork the project make a patch or use something else no one's holding you hostage here.
I have used emacs it's just not my cup of tea and is bloat by almost every metric.
usr originated because they ran out of disk space
more code is alright I just want to to actually do something useful. replicating existing functionality isn't useful (to me) but may be useful to others. Feel free to choose not to use suckless programs the obviously weren't made for you.
wow you're really witty user. I wonder if we should have just kept the paradigm used in lisp machines and DOS.
I legitamately kek'd

surf has some more coarse control built in.
I rarely visit sites that have a ton of javascript and 3rd party trackers so that informs my opinion a bit.

suckless a day keeps the brainlets away

Attached: 19129348239.jpg (1280x720, 136K)

That approach works best for simple problems, like they had back in the day when the UNIX philosophy came to be.

Emacs is my text editor, window manager, shell, and all manner of miscellaneous programs. Emacs then becomes a repl for my whole system. The same Emacs script can manipulate files, text buffers, x windows, irc channels, and whatever else freely. That’s the advantage of doing everything, even if each thing is not done as well. The equivalent would be bash glue scripts, but Elisp is better.

Using some of it right now.

Its ok. st and dwm are great but surf is a little too lacking for for everyday use to me.

I see you are using mksh too - that's pretty nice user. Do you miss any zsh/fish features such as fancy prompts, autocomplete from options or autocorrect?
And how many programs did actually break because of missing coreutils?

Luke's st build has horrible input lag on my toaster. In the order of seconds. Never experienced that with xterm.

emacs users are truly disgusting. worse than using windows.

This is your brain on Unix.

surf isn't minimal at the core though. Use a text-based browser or something like NetSurf or Dillo if you want to go minimal.

Consider reading this:
troubleshooters.com/linux/surf.htm
Also there are others suckless browsers, like luakit and vimb, that you can give a look.

An attack surface? user, who would like to attack you at all? You're not a primary target for miner writers, and besides they would use different ways to hack you. And suckless uses C after all. That's cybersecurity of g lvl. Use common sence instead.
As of gnuutils replication of awk/sed functionality. Awk/sed are languages, it's normal to write some code doing particular task on them. But woa, we have a couple of scripts which are world common, everyone uses them! They should be default in the system. In fact, they can be optimized by being written in fast compiling language. And then we have some bins replicating some sed/awk functionality. Maybe it didn't happen really, but it totally would do that if awk/sed indeed were used. How useless is that?

>Emacs is a prime example of this third way
It's not. It's a mess of layers of compatibility dragging from 70s. If you actually use it, you'll notice many packages are a mess too (but much smaller mess).

What is the best way to patch dwm? I currently have a config branch alongside the feature branch, is this good enough? Moving to dwm by the end of the week hopefully

eh whatever works for you.
The issue is that you're replicating an entire OS in a single binary. I think the Unix Way tm is better, especially for anything mission critical.
never used fish, I tried zsh a few years back but wasn't really impressed. I never really had a super fancy prompt just some color. the autocomplete in bash and mksh has always been enought for me.
No programs broke when I replaced coreutils my dwmstatus script broke because of some GNU specific options in grep but it took ~5 minutes to fix.
Other than that the system runs faster and the man pages for sed and awk aren't as long so you can actually read them (look at the awk manpage on ubuntu and expirience true pain and you'll see what I mean).
that said I'm using the one true awk: cs.princeton.edu/~bwk/btl.mirror/
change these lines in config.h
static unsigned int xfps = 240;
static unsigned int actionfps = 120;
adjust higher until the input lag goes away
agreed but the web is a mess no matter what you do unfortunately. One of these days I want to make a stand alone html renderer to use lib curl to fetch and render plain html, this could be extended with other separate programs to render js and css too.
I just use surf usually and icecat whenever I post here since surf has issues with captcha (usually that'd be a feature).
>every attacker just sits at a computer targetting people specifically by name manually running attacks on vulnerable code
I wonder why this hollywood depiction of security breaking is so common among less informed people...
We're anonymous here you don't know me so I very well could be a target for all you know. But given you're projection I'd guess you're not good job it dosn't mean that minimizing attack surfaces is a bad idea. It's computer security 101.
gnuutils breaks portability when I write a script It also needs to be compatible on bsd and solaris since I use them in my environment.

dwm or awesome when you're just starting out with tiling wms and setting them up?

>The issue is that you're replicating an entire OS in a single binary.
Ignoring the fact that you misunderstand how Emacs isn't just a single binary, it isn't an OS, nor does it replace Unix programs with subpar versions, but builds upon these programs to make them better, integrate them into the Emacs workflow, and manipulate them with a powerful programming language.
For example, Magit doesn't replace Git, but builds upon it to make a better way to interface with Git. Same goes for mu4e and other packages.
Of course, I find it in bad taste to talk about Emacs in a suckless thread, so I'll leave it at that.

suckless, more like jobless lmao

Unironically install Gentoo. Portage handles patches very well.

>Calculating dependencies /
>Calculating dependencies -
>Calculating dependencies \
>Calculating dependencies |

They are pretty nice.
It seems like most people ITT doesn't get the point of suckless. Unirronicaly Luke Smith summed it right, suckless is not a full fledged alternative to existing software but small tools you can use in more complex systems.
I personally use dmenu in my scripts and it's really useful. I've using Terminator for some time but now as I move to tiling window manager I've configured st and it's pretty good as well.

>nawk
Why not mawk?
>No programs broke when I replaced coreutils
That's interesting. I was expecting that some of the bigger stuff broke.

>change these lines in config.h
I increased them until the values were absurdly high, no change. I wonder if it's related to Luke's build. Everything works fine until after holding down backspace with my relatively high key repeat setting. It just starts lagging then.

You pretty much have to apply them all manually on the latest version because none of them are maintained.