I like the principles behind its design, but not supporting scrollback and saying "that functionality should be provided by tmux or something similar" is baffling when it's done in the name of removing bloat and complexity.
Not everybody wishes to use a terminal multiplexer in all cases, either.
This thread is like every thread on suckless software ever.
>This software, which specifically states that it caters to a niche, doesn't cater to my needs. I'm not going to consider thought that I might not be part of the niche it's catering to and complain about it instead.
As much as I love st, I had to stop using it recently. When using a bitmap font in tmux, large amounts of text sent to stdout bring my computer to a standstill. X is using 100% of a single core. I've switched to gnome-terminal and the issue is gone.
This, along with the generally accepted notion that Gnome Terminal is one of the slowest with output, puts the whole minimalism idea under a serious question. "Do one thing, but do it well", the saying goes.
I can't help myself: suckless sucks. Lots of arbitrary limitations for the code, need to recompile instead of configuration, optimizing for a wrong usage scenario.
Even though I can't stand to use their software (or their aesthetic, or their ethos...) I'm very grateful that suckless exists. The source serves as an excellent reference if you want to learn, say, how a (non-trivial) window manager works, or how IRC is implemented in practice, or how to wrap the WebKit/GTK+ interface. The code is usually quite straightforward, and the lack of features/config makes it fast and easy to see what's going on.
I think the suckless project has correctly identified that a lot of software sucks, but their attempts to make it "suck less" are focusing on the wrong points. A lot of mainstream software is grossly inefficient, bloated and resource-intensive, and that's not necessarily because they're featureful. It's certainly possible to write software that is both featureful and efficient, but suckless aggressively cuts features instead of optimising, to reduce the perception of inefficiency; what's left is not necessarily efficient.
In fact, I don't remember the details now but I recall looking at the source for another one of the suckless applications and finding some pretty inefficient algorithms. I think the other comment here about st being CPU-intensive with high output rates is an example of this.
Ironically, one of the reasons I think mainstream software sucks is because newer versions also tend to remove configurability and features often for the same goal of reducing bloat.
I find that most of their software is targeted towards beginner/intermediate hackers. Having to recompile /forces/ you to tinker with the source code. When I was learning how to code I would hack the shit out of my window manager (dwm), I learned a lot of C in the process. When you think about it that way, the "arbitrary limitations" on lines of code and everything else starts to make sense.
I agree most of their stuff isn't targeted toward the average user, just this small niche. Their browser, surf, doesn't even support tabs as far as I can remember.
You're clearly not their target audience if those are your takeaways. But there are lots of people out there who do prefer to recompile instead of configure and find suckless feature sets to be inline with their own requirements. To say that a product "sucks" because they don't cater specifically to your arbitrary desires is grossly unfair.
The code does unsafe things in signal handlers (vfprintf, for example), and hides some things in macros that I wouldn't expect to see hidden (like the assignment of the global "argv0" variable, defined in st.c, is assigned in a macro from arg.h).
I used st for a good year and it worked really well! I've switched recently for features like the ability to change the font size without recompiling, etc. Despite its spartan feature set, st is quite usable.
Bugs. When you work all day long in a terminal, you need it to be reliable. As I mentioned above, xfce4-terminal is what I normally use but select-to-copy doesn't work 100% of the time. This is super annoying. I'd switch to rxvt but it has its own problems. Despite having had terminals for so much longer, *nix has fallen behind macOS when it comes to terminal usability and reliability.
There have been many times when vim starts glitching out or something because of the terminal emulator I'm using. Even well tested ones like X-term and gnome-terminal. I never had that problem using st.
We hack so much into a text interface it's really easy to accumulate bugs.
xterm is a de facto standard, in that you can sit down in front of a machine which appears to be running some flavour of Unix, it doesn't matter if it's Gnome, KDE, TWM, CDE, etc., GNU or BSD or Solaris or whatever, you'll probably be able to find xterm and work out the rest from there.
Many devs/hackers use xterm as their day-to-day terminal, and seem to approximate ANSI control code compliance with "works in xterm".
The problem with this situation, as mentioned on the st page, is that xterm is unmaintained and unmaintainable.
st is trying to be a maintainable replacement, making improvements like vector fonts, and not being shy about ignoring legacy/niche/solved-elsewhere features.
Not that ridiculous from a developers perspective. All of the software I write use hardcoded constants as config. Then once the app is stable and usable by myself on production environments - and only at that point - do I consider building in a config system or at least a few command line flags.
What's more, many developers (myself included) aren't afraid of jumping into someone elses code and modifying it to behave how we want.
Let's also remember that a great deal of software you don't even think about also runs this way; they'll have config flags to add and remove features at compile time (run Gentoo or FreeBSD ports for a few weeks and you'll see what I mean).
So having hardcoded options isnt that ridiculous nor uncommon on Linux. However mainstream desktop distros do a good job at hiding that from their users by picking sane defaults for them.
Counter-example: Xmonad. Here's how I "configure" it:
Open ~/.xmonad/xmonad.hs. It's Haskell code, but frankly it reads like a configuration file, with a big list of shortcuts.
Edit the "code". You don't need to know Haskell, just follow the syntactic conventions you see there. Worst case, you have to search for configuration tips on the web.
Save xmonad.hs, hit the "recompile Xmonad" shortcut. You've now recompiled and restarted Xmonad, and all your windows are still where they were before. Application state survives recompilation.
Does not apply to all software. It is just a terminal (and pretty fast terminal). I don't need change options for ST often. Changed probably few times just after upgrade to new version.
More often options are changed on the shell (ZSH in my case)
Then even more often on tmux.
It is also, in practice, actively maintained and gets bugfixes. It turns out there are a metric buttload of obscure corner cases that do need to work right.
This is my favourite terminal. I have it configured to run tmux, and couldn't be happier. Lightning-fast, stable as can be, it gets out of my way and lets me work.
I've been using it as my main terminal for I think over 2 years, selected my patches, tweaked it a little. Great hackable little thing with comprehensible code.
xterm's support for the Tek graphics terminal is actually quite neat, since you can use it with for example gnuplot to plot things over a (bad) SSH connection.
Also there is still some niche software that still requires it (for example IRAF which sadly is still going strong in the astronomy community).
Indeed it is and not just for that. When I developed the firmware for our my company's laser product I exhaustively used the Tek graphics support for debugging purposes. Kind of neat if you've got only a serial connection and have to plot graphs. Much better than dumping it into a file and plotting it with gnuplot.
Interesting. I've been wanting a better terminal for some time. rxvt is super buggy, especially with clickable URLs. xfce4-terminal is better but select-to-copy is flaky and doesn't always copy the text I select.
I really wanted st to work for me but something is wrong with the character sizing when using Source Code Pro (17pt) as the font. I installed this on my Arch laptop (a hidpi ThinkPad T460s) and something is seriously screwy with the fonts. At top is xfce4-termina; on the bottom is st:
I find terminal emulators on Linux to be woefully inadequate after getting used to iTerm2 on OS X. Can anyone recommend a Linux terminal emulator that even comes close in terms of features and performance?
[+] [-] mikejmoffitt|9 years ago|reply
Not everybody wishes to use a terminal multiplexer in all cases, either.
[+] [-] cyborgx7|9 years ago|reply
>This software, which specifically states that it caters to a niche, doesn't cater to my needs. I'm not going to consider thought that I might not be part of the niche it's catering to and complain about it instead.
[+] [-] someheavyocean|9 years ago|reply
[+] [-] nine_k|9 years ago|reply
[+] [-] problems|9 years ago|reply
[+] [-] satai|9 years ago|reply
[+] [-] tomjakubowski|9 years ago|reply
[+] [-] userbinator|9 years ago|reply
In fact, I don't remember the details now but I recall looking at the source for another one of the suckless applications and finding some pretty inefficient algorithms. I think the other comment here about st being CPU-intensive with high output rates is an example of this.
Ironically, one of the reasons I think mainstream software sucks is because newer versions also tend to remove configurability and features often for the same goal of reducing bloat.
[+] [-] Jillboy|9 years ago|reply
I agree most of their stuff isn't targeted toward the average user, just this small niche. Their browser, surf, doesn't even support tabs as far as I can remember.
[+] [-] laumars|9 years ago|reply
[+] [-] Karrot_Kream|9 years ago|reply
[+] [-] jjnoakes|9 years ago|reply
[+] [-] kookookabongers|9 years ago|reply
void (handler[LASTEvent]) (XEvent ) = { [ButtonPress] = buttonpress, [ConfigureRequest] = configurerequest, [DestroyNotify] = destroynotify, [EnterNotify] = enternotify, [LeaveNotify] = leavenotify, [KeyPress] = keypress, [MappingNotify] = mappingnotify, [MapRequest] = maprequest, [PropertyNotify] = propertynotify, [UnmapNotify] = unmapnotify };
What's this feature called?
[+] [-] charlesetc|9 years ago|reply
[+] [-] pmoriarty|9 years ago|reply
[+] [-] noufalibrahim|9 years ago|reply
[+] [-] corybrown|9 years ago|reply
[+] [-] unknown|9 years ago|reply
[deleted]
[+] [-] smlacy|9 years ago|reply
[+] [-] chrissnell|9 years ago|reply
[+] [-] charlesetc|9 years ago|reply
We hack so much into a text interface it's really easy to accumulate bugs.
[+] [-] chriswarbo|9 years ago|reply
xterm is a de facto standard, in that you can sit down in front of a machine which appears to be running some flavour of Unix, it doesn't matter if it's Gnome, KDE, TWM, CDE, etc., GNU or BSD or Solaris or whatever, you'll probably be able to find xterm and work out the rest from there.
Many devs/hackers use xterm as their day-to-day terminal, and seem to approximate ANSI control code compliance with "works in xterm".
The problem with this situation, as mentioned on the st page, is that xterm is unmaintained and unmaintainable.
st is trying to be a maintainable replacement, making improvements like vector fonts, and not being shy about ignoring legacy/niche/solved-elsewhere features.
[+] [-] Skunkleton|9 years ago|reply
[+] [-] Karrot_Kream|9 years ago|reply
[+] [-] shmerl|9 years ago|reply
[+] [-] michaelmrose|9 years ago|reply
[+] [-] laumars|9 years ago|reply
What's more, many developers (myself included) aren't afraid of jumping into someone elses code and modifying it to behave how we want.
Let's also remember that a great deal of software you don't even think about also runs this way; they'll have config flags to add and remove features at compile time (run Gentoo or FreeBSD ports for a few weeks and you'll see what I mean).
So having hardcoded options isnt that ridiculous nor uncommon on Linux. However mainstream desktop distros do a good job at hiding that from their users by picking sane defaults for them.
[+] [-] loup-vaillant|9 years ago|reply
Open ~/.xmonad/xmonad.hs. It's Haskell code, but frankly it reads like a configuration file, with a big list of shortcuts.
Edit the "code". You don't need to know Haskell, just follow the syntactic conventions you see there. Worst case, you have to search for configuration tips on the web.
Save xmonad.hs, hit the "recompile Xmonad" shortcut. You've now recompiled and restarted Xmonad, and all your windows are still where they were before. Application state survives recompilation.
[+] [-] matthewbauer|9 years ago|reply
[+] [-] minitech|9 years ago|reply
[+] [-] Pawka|9 years ago|reply
More often options are changed on the shell (ZSH in my case) Then even more often on tmux.
[+] [-] marssaxman|9 years ago|reply
[+] [-] unknown|9 years ago|reply
[deleted]
[+] [-] fiatjaf|9 years ago|reply
[+] [-] davidgerard|9 years ago|reply
Here's the changelog: http://invisible-island.net/xterm/xterm.log.html
xterm is addressing a vastly broader audience than st.
[+] [-] eriknstr|9 years ago|reply
https://www.enlightenment.org/about-terminology
[+] [-] wtbob|9 years ago|reply
[+] [-] residualmind|9 years ago|reply
[+] [-] Lapsa|9 years ago|reply
[+] [-] welterde|9 years ago|reply
Also there is still some niche software that still requires it (for example IRAF which sadly is still going strong in the astronomy community).
[+] [-] datenwolf|9 years ago|reply
[+] [-] chrissnell|9 years ago|reply
I really wanted st to work for me but something is wrong with the character sizing when using Source Code Pro (17pt) as the font. I installed this on my Arch laptop (a hidpi ThinkPad T460s) and something is seriously screwy with the fonts. At top is xfce4-termina; on the bottom is st:
http://imgur.com/a/8ALoS
I would report this to the author but I don't see any way to do so.
[+] [-] unfamiliar|9 years ago|reply
[+] [-] pizza|9 years ago|reply
[+] [-] hiq|9 years ago|reply
[+] [-] Lapsa|9 years ago|reply
[+] [-] daef|9 years ago|reply
but it makes me wonder if the parens at the end make sense - shouldn't it be something like
also asked here https://stackoverflow.com/questions/42001665/is-this-a-plain...[+] [-] hendry|9 years ago|reply