I love the ideal of keeping things simple. I did my first steps in C studying dwm code and making my own window manager.
That said, simplicity can obviously be taken too far. These tools do not enough to be usable in practice.
Why would I want a binary which does nothing besides warping the X11 pointer? At least do a little more, like xwit. (not that I've used either)
dwm also turned out to be impractical for me. Didn't work well for some applications like Gimp. Tiling terminals I also find impractical because I like them to be a certain size (80 columns) and that's not supported by tiling. The most important wm action for me is switching and rotating between 2-3 windows (simultaneously visible _as much as possible_). Stacked windows and Alt-Tab turn out to be better at that kind of thing.
Just tried that "sent" tool which I find nice and kind-of-usable. But so many lines of C. And a hand-rolled UTF-8 parser which discards text silently after decoding errors. Couldn't that be hacked in Python as a much shorter throw away script? Extreme portability is bogus if the software can be replaced in a few hours work. Plus, if you neglect to use higher-level libraries and tie yourself to low-level POSIX and X11, portability actually suffers.
This was the biggest annoyance when I (briefly) tried a tiling WM - they are definitely not for those who like resizing windows independently and overlapping them so as to show only the relevant bits without having to resize.
It was tedious last time I tried because you had to remember what windows are tiled and what floated and explicitly switch between the layers. And only rotating was supported, not Alt-Tab style LRU switching. Alt-Tab works the best for the most common case of 2 "hot" windows because you don't have to remember the order of the windows regarding rotation.
I use dwm with gimp, it is a little bit of a pain but I'm pretty used to it at this point so for me it's usable. Granted I don't need to do anything in depth.
Good stuff. Though seeing dwm have a null-check-before-free made me squirm. Have been using st for awhile now, it's nice, bit of a hassle to get backspace working & I sometimes miss being able to scroll back over console output
The only-one-file philosophy seemed to be a bit of a hassle where st had to turn down a wayland patch. One would think that it could be split into st-common.c, st-x11.c, & st-wl.c where the rendering backend is abstracted
stalin is neat but I personally feel using git to distribute binaries suboptimal. I'd prefer if there was a /build directory where one could git clone submodules & run a /build/install.sh to update the system. But that'd be something else by then I suppose & I haven't looked into it _that_ much to really critique
Not really. It's chromeless, doesn't render anything. So you boot into a black screen & Alt+Q opens st in the upper left corner (this could change by modifying nobox's st invocation with geometry options)
I have st invoked in my xinitrc so that st is open as soon as I start nobox. I don't use a file manager so everything I do happens through st besides opening firefox with Alt+A or showing time with Alt+C (I use to have more shortcuts but over time have reduced my usage. I use to have Alt+S to open SciTE but have since transitioned to vim)
Anyways since you asked here's a screenshot I took just now after having opened GIMP: http://imgur.com/pjSe3pN
Since nobox isn't a tiling window manager it doesn't have any issues running GIMP in multi-window mode, besides my preference for unique mode: http://imgur.com/Qf2PvhO
suckless is awesome! xmonad would totally suck without dmenu, i found zathura because of their "rocks" page, and st[+] has unicode support now, apparently?! might be time to switch from urxvt...
i'm not saying "suckless all the things!" these people have made my daily life easier, though.
I did a small experiment to see if st would actually be much snappier. Font rendering was a little worse but that was tolerable.
ST is fast (as expected)
$ time $(for i in `seq 1 100`; do st -e true &> /dev/null ; done)
real 0m5.493s
user 0m4.417s
sys 0m0.647s
URxvt is a little slower (but traditional wisdom should tell you that if it is actually so small that you need to measure it to perceive the difference, the difference probably doesn't matter)
$ time $(for i in `seq 1 100`; do urxvt -e true &> /dev/null ; done)
real 0m11.099s
user 0m9.780s
sys 0m0.853s
URxvt client (with a separately launched urxvtd) is faster than st.
$ time $(for i in `seq 1 100`; do urxvtc -e true &> /dev/null ; done)
real 0m4.593s
user 0m0.007s
sys 0m0.017s
Given how solid urxvt has been for me over the years, and given that I run urxvtc already, I don't see why switching to st would help (the argument against featuritis can obviously be made, but urxvt is fairly minimal as well).
Note: I do not know how it would affect it, but I also have a .Xdefaults that sets fonts, colors etc for URxvt.
Edit:
adding xterm to the comparison since some sibling comment mentioned it
$ time $(for i in `seq 1 100`; do xterm -e true &> /dev/null ; done)
real 0m8.525s
user 0m2.777s
sys 0m0.770s
I wasn't talking about startup speed as that can be ignored given the kind of shells and configs we use these days which will consume most of the start time.
What I was talking about were things like how much memory overhead the emulator has and how fast it paints stuff or how quickly it responds. Some things were slower in urxvt and then some things didn't work as correctly as in xterm, so I didn't bother configuring urxvt for more speed. st, on the other hand, wasn't faster and actually was heavier memory-wise when I tried it the last time.
I ran some benchmarks with perf stat a while back, consisting of displaying a multi-MB text file on screen. st was a lot slower than urxvt, but on par with VTE based terminals. urxvt has other problems though, so I'll stick with st.
xmonad has a built-in (xmonad-contrib) program launcher prompt that doesn't require an extra program and is more comfortable to use. There are other prompts included as well and you can build more prompts in Haskell. st used more memory and was slower than xterm last time I tried. I try using urxvt or st and only xterm works without problems or slowdowns. We may be using it in different ways and exercise different features of the terminal emulators :).
Since st has no scroll buffer, theoretically it's impossible for st to consume more memory than xterm. If st does eat up more, it should be because of its screen buffer, whose size is decided by the size of its window.
Also, yes, the rendering portion of st is not the fastest. I know it pretty well because I implemented it like an year ago. It has been improved, but it's still kinda hacky due to lack of proper Unicode layout engine (or normalization). And what makes things worse is that existing layout engines(ICU, harfbuzz, etc) are just "sucks" for suckles community, while making a new one is not feasible AFAIK.
I don't understand what you're saying about the three different buffers and if you mean that there's a hidden buffer I don't see in xterm but which is used somewhere else in the stack.
I exclusively use bitmap fonts in terminals and editors for crisp and clear text and cannot get bitmap fonts to work in st config.h anymore.
I just switched from dmenu to the contrib prompt, only thing to look out for is that the searchPredicate function of the XPConfig doesn't actually seem to do anything.
urxvt with the daemon (urxvtd & urxvtc) is blazing fast, in my experience. That said, it's not fun when all my terminals suddenly freeze (happens to me once a year, roughly).
It's faster to start for sure. I don't doubt that it's faster for you, since many users praise urxvt's speed over xterm. It just hasn't been the case for me.
I've learnt basics of Linux with dwm + dmenu. It's awesome. I long for the day dwm style Windows management is smooth on Windows. It's possible to create many virtual desktops in Windows 10 but windows snapping thing isn't close to the functionality of dwm imo.
'st' falls short in very basic real life [for me] test - paste-ing 2-5MB of the text via ssh to the remote router(yes I'm more than aware about about other methods, those are emergency cases when I have to connect via someone's laptop with data modem). 'st' just freezes, I've reported that at the IRC channel, got some debugging tips, problem confirmed but as I see in git hasn't been fixed. Need to say `st` is not alone with that problem - gnome terminal has it, perhaps overs. Old school xterm and surprisingly 'konsole' pass that test.
I wanted to like st, but vim was kind of broken in it. I'm sure the suckless guys would tell me vim sucks and I should use vi instead. I think it's great that we have people with hard-line, absolutist views about technology. I might not want to live in their world, but they're exploring possibilities the rest of us would never consider.
>The suckless way is to have a short usage and a descriptive manpage. The complete details are in the source.
Can't agree with that. Also this reminds me to the chapter about documentation in the "UNIX Haters Guide"[1]. (I recommend everyone read it for an alternative viewpoint about UNIX, although most of it is obsolete)
The GNU info system is actually a pretty good attempt to fix the mess that is classical UNIX documentation. No, the source shouldn't be a documentation source. It's for programmers only, and it can be a reference, like man pages. A good info page can provide a full manual from which someone that is not familiar with the program/programming interface can learn how to proceed from scratch. Also, unlike man pages, info pages are hyperlinked. I agree that the info program itself is not very user friendly tho, maybe that's the reason it's not as popular as man pages or HTML documentation in the project website.
You don't have to. When I first found out about the suckless project, it seemed completely inaccessible, due to the lack of in-depth documentation. After reading around a bit, it seems intentional. My impression was that suckless doesn't aim for quantity, but for quality, even among its userbase, hence the lack of documentation is an entry barrier, a minimum of technical literacy required to get in. Look at the source and you don't need a wiki. My gut reaction says, that's quite elitist - which itself is negatively connoted when everyone aims for widespread adoption and usability. In the end, I agree with this idea. Software is supposed to serve a purpose. It doesn't have to suit everyone. It can be for a selected few, and still be a great project. What changed my mind was that dwm doesn't use configuration files. I came from openbox and more than once broke the menu because of a syntax error in the xml-based config. In dwm, you change the source config and recompile. This way, any and all errors are returned to you, you can fix it and try again, without ever risking any configuration issues or breakages. They do the same with st, their terminal. I'm absolutely convinced by this approach.
I like the underlying idea of suckless- and would put them in the same category as an academic attempt to build an OS, language et al in 20,000 lines of code.
There ought to be a set of principles we can extract - KISS probably. Ignore project plans ?
> Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions.
The source reminds me of the BSD one... I'm a little surprised that the parser is a plain recursive-descent one instead of operator-precedence/precedence-climbing[1][2] since the latter definitely feels like something the Suckless philosophy would highly agree with: extremely concise and elegant.
This comment is worthless. This obsession HN has with picking apart simple details like this to achieve some sense of superiority based on your preference to name things differently is ridiculous. Judge them based on the merits of the software they write, not based on the name they use for it. After all, Linux's creator must have been an egomaniac to name it after himself - it'll never take off.
After all, Linux's creator must have been an egomaniac to name it after himself - it'll never take off.
Curiously, Linus did consider naming it "Linux" as too egotistical, and chose "Freax" instead. It was a colleague who renamed it when uploading to the FTP server.
The "Suckless" moniker gives a hint that they're about software quality, and is cute and playful enough that I actually like it.
But having spent a few moments clicking around their site, I have literally no idea what the basic idea is, who they are, what they've accomplished, or why it might be interesting to learn more about them.
Sorry, but what the heck is dwm, dmenu? Where is your philosophy statement that can be read? I'm sure everything you're doing is great, but people aren't going to join a mailing list before they at least have a real interest in what you're doing. The current web page does very little to inform someone starting from zero. At least someone as thick as me. Cheers.
> Where is your philosophy statement that can be read?
This demonstrates that you did not even visit the suckless.org home page [0]. How do I know?
Because the word "philosophy" in the two sentences preid24 quoted links to the very thing you're asking for. It's even a boring-old anchor-tag-link in almost-traditional hyperlink blue on traditional white that reacts on hover.
> [W]hat the heck is dwm, dmenu?
Also answered by the hyperlinks on the suckless home page.
I didn't go back to the web page before answering the reply, you're right. Still haven't, since i've yet to hear something compelling that I missed the first time.
An abstract philosophy for example, isn't going to leave an impression without some concrete examples of its principles in action.. a screen shot maybe, of the applications mentioned with an explanation of how and why they are better than the alternatives.
N.B. "Take a hike"... this does not seem like a friendly community at all.
You can take what you will from my reaction to your website, or nothing. If you think nobody important will ever share my view, then there's no harm in ignoring me :-)
Sorry that the tone between us became somewhat combative, since that was never how I felt about things for a moment.
Hi, I love you. You are a normal person on HN trying to honestly make sense of the world of technology, and not taking any crap from all of the "Haha, U srsly don't know about xvzz and zxcz, LOL" types of people around here. I just love that!
Thanks. Someone seems to think i'm filled with "ire", when all I was expressing was my genuine experience of not feeling engaged or intrigued by a website. The responses so far seem very defensive.
It's a pity that your admiration is misplaced.
tux1968 has let their ire prevent them from launching even the most basic fact finding mission. (That is, actually visiting the home page of the project about which they're asking questions.)
That breaks the HN guidelines and we ban accounts that do this, so please don't do this. Fortunately, it's nearly always easy to edit such things out of one's posts, thereby following the guidelines and improving one's posts.