Top
Best
New

Posted by underdeserver 1 day ago

Stop Making TUIs(sockpuppet.org)
356 points | 462 commentspage 5
loeg 1 hour ago|
The article is interesting even if you disagree with the headline conclusion -- don't skip it on that basis.
thayne 10 hours ago||
> Nothing is stopping you from designing a dense and economical GUI.

Then why isn't it done more often? I suspect part of the reason is that most gui frameworks are not really designed for making dense economical interfaces.

> you probably don’t need a user interface on prod. You need a command line interface on prod that

I don't need one, but I often want one. Being able to run vim, htop, etc. on servers is quite useful. Also, it isn't just prod servers. It's also nice to run tuis on VMs and containers that don't have access to graphics.

> I’m not really building applications for other people to use. I’m building them for me. TUI affordances are an awfully big hit to take to get Linux users of programs I don’t even want to publish.

Ok. That's fine. But then why are you trying to convince other people not to make TUIs? If I make an app you find useful, wouldn't you prefer me to make a TUI you can run on your Mac to a linux-only GUI?

lee_ars 8 hours ago|
> Then why isn't it done more often?

Because it tends to require a lot of thought and effort along totally separate engineering pathways than most of the actual functional coding. Good UI design is not easy, and the skills to do it don't directly overlap with good coding skills. It's hard.

> I suspect part of the reason is that most gui frameworks are not really designed for making dense economical interfaces.

Don't blame the tooling for a broad failing of many developers. It's because constructing a genuinely dense and economical interface for most apps requires considerable time and effort, and frankly, most developers are crap at understanding how users other than themselves use applications. Those that aren't crap at it tend to have worked in large teams with dedicated UX people to help drag them away from their preconceptions.

thayne 1 hour ago||
But TUI's are more likely to have dense, economical, keyboard driven interfaces. Part of that may be the target audience, but I also think TUI Frameworks make it easier to make good keyboard navigation and interactions than most GUI frameworks.
cushychicken 3 hours ago||
Funnily enough I wrote a similar blog about this in the era preceding LLM assistance.

I’m with Tom on a lot of what he says. This is a nice reminder to take another shot at this.

https://cushychicken.github.io/python-guis-for-heretics/

stephc_int13 4 hours ago||
TUI are often inferior to GUI from a user perspective, but not necessarily by much.

On the other hand, they are easier to build in a cross platform manner.

Linux is probably the most difficult platform to build GUI for, because of all the fragmentation, X11, Wayland, all the different flavors of GUI toolkits, driver issues, window managers issues, font issues etc.

TUI are a bit like web apps in that regard, using the terminal instead of a browser to abstract the platform.

jimmydoe 4 hours ago|
> a user perspective

a lot of boomer and millennial dev users love TUI bc that's what they grew up with. part of A\'s early success is hit that sweet spot and triggered a culture shift late last year.

as those age group phasing out, web ui will be dominant

willjp 5 hours ago||
TUIs work where I do. I don't want to juggle another window unless I need to. Tmux gives me better ways of organizing my work than most display managers. Most of the useful things I do end up calling other shell commands, and it's nice having terminal right there. Ctrl-t / fg are also uniquely powerful.

UIs are also useful for information that is best represented in a UI. keep using those too.

You can bend each to be more similar to the other, and that's good too! Sometimes there is a good use case for that.

cavem0nkey 3 hours ago||
You can shit on TUIs but macOS isn’t the panacea of GUIs. This really compromises the argument. In fact I’d argue it’s one of the worst platforms for GUIs.

Sure it looks pretty but it’s impossible to drive from the keyboard without mutant hands and savant level of memory for arcade combos. That means the entire OS relies on being able to drive the UI from a positioning device and thus you have to have the coordination to piss on an ant off a moving train. Which is terrible when the input devices are a touchpad, which varies so utterly frustratingly depending on whether it’s in the laptop or over Bluetooth. That and a mouse which is designed by a complete psychopath. That leaves you with third party options which require apps to not suck and they still suck. Scrolling on Logitech options anyone? Even LinearMouse can’t fix that shit.

Compare windows which works absolutely fine from any keyboard or any mouse and is discoverable and consistent. Also no mutant hands required.

TUIs are closer to windows than macOS. And that’s a good thing.

I did the last ten years on a mac and decided I was just hurting myself. Give me windows or a TUI. I notice Linux desktop environments tend to copy windows with respect to keyboard and discoverability too.

swiftcoder 1 day ago||
As someone who works on a very GUI-centric OS (i.e. Mac), TUIs just don't integrate very well with the rest of the non-Terminal ecosystem.

They don't support standard GUI shortcuts. They don't support drag-and-drop. I can't double-click a file and have it open in a TUI. They don't integrate with spotlight metadata. They don't ship document icons. They have terrible support for accessibility APIs. And so on...

benj111 1 day ago|
It's somewhat an issue with Linux as well.

Ctrl c does 2 completely different things. Terminology is different. Etc.

Problem is. Terminal applications standardised in the 70s. Guis in the 90s. Although that's being undone by web apps, and the influence of touch screens.

pkulak 4 hours ago||
And the very first app example is a Mac-only markdown viewer. If only it was a TUI; then I could try it out and partake in this conversation!
jameshart 4 hours ago|
Because the author wanted the ability to open and browse markdown files when you double click them on a Mac. How would a TUI better serve that purpose?

There's more on this here: https://sockpuppet.org/blog/2026/05/12/emacsification/

stianhoiland 8 hours ago||
You can't tell someone who doesn't like the command line why it's so awesome.

EDIT

> CLIs have purposes for which they’re irreplaceable. Building a CLI is almost always a good idea. Building a TUI almost never is.

Oh, right. I can see that, but I go the other way: When I have a CLI, don't give me GUIs; give me files. Actually, just give me files and daemons. I'll do the rest, thank you!

jmorenoamor 1 day ago|
No. I like them.
danpalmer 1 day ago|
What do you like about them? I disagree, but so many people seem to like them that I assume I'm missing something. The main one I've heard before is that they work nicely over SSH, but I assume there must be more?
nimih 1 day ago|||
I personally like making (and using) TUIs because:

- They encourage developing simpler, information-dense, and keyboard-driven interfaces, which I tend to prefer in general.

- I find them more fun to write, and less aggravating to maintain and debug, than interfaces built with GUI toolkits.

- Most software I write for personal use is going to be run in both a Linux and Mac OS environment (and a lot of the time on a headless server to boot), and a TUI often has less fuss than other options (at least, IME).

- I think monospaced text in a terminal just looks cool.

annapanna 1 day ago|||
But you can't really do information dense when you are limited to a fixed grid of monospaced character glyphs. Variable width fonts are much more information dense for example.
nimih 1 day ago|||
By "information dense," I meant in contrast to what is typical in modern GUIs: generous borders and margins between interface elements, large buttons, etc. My experience both using and writing TUIs is that, because of the extreme limitations of your tools w/r/t styling and layout, more of the screen real estate tends to be devoted to displaying data, and on whole I prefer that.

YMMV, of course, I'm just sharing my own experience and perspective.

croon 1 day ago|||
I prefer TUIs personally, but I can't see myself use maps, or visual image editing in a TUI for example, but is vi infinitely faster than vscode for manipulating a codebase? Absolutely.

Anything that lends itself to keyboard input, piping, text manipulation and a bunch of other things are so much faster if you're equally proficient in both input modes.

beej71 1 day ago|||
I think the "fun as hell to write and use" angle is underrepresented in the comments—thanks for bringing it up.

It is, of course, completely subjective, but I know there are a fair number of people out there who agree with that statement.

barnabee 1 day ago||||
IMHO the rise of TUIs is heavily correlated with the near-abandonment of professional quality graphical interfaces.

If there was a powerful, information dense, configurable docking/tiling, multi-application-composing GUI framework (all things a good terminal can do) then yes, build everything in that. I’d love to see it.

Until then, TUIs are vastly better than another Electron app or Mac app using UI frameworks that are trying their hardest to look and act like basic phone apps.

funlang 11 hours ago|||
Yeah, I feel the same. Most modern GUIs waste so much space and hide actions behind hamburger menus – TUIs just get out of my way and let me work fast. I’ll take a well‑made TUI over a sluggish Electron app any day.
anon7000 13 hours ago|||
Nailed it. As the blog post says, GUI’s aren’t normally written for nerds. They exist, but it’s not normal.

So even professional tools all follow industry design and product trends which are too simplistic, don’t give you the info you need, and are optimized for abstract brand design or chasing metrics for the company, and not optimized for “how do I let my user accomplish their task as fast as possible”

mrheosuper 1 day ago||||
Lightweight and can run over ssh are 2 main reasons i like them.
Linux-Fan 8 hours ago||||
I use the terminal for most things which are not web browsing hence for me it makes sense to prefer TUIs for "lightweight" GUI needs.

I love how I have to configure font size and family only once in the terminal emulator and not for each program/GUI toolkit again.

Of course, there is no way to replace graphical-heavy programs (GIMP, QGIS etc.) with TUIs.

<https://masysma.net/37/why_terminal.xhtml>

takluyver 1 day ago||||
In addition to what other people have said, the terminal interface is cross-platform and very stable, so TUIs need little or no maintenance to keep working.
Kon5ole 9 hours ago||||
I also like them so I can mention some things that spring to mind:

- Some are very good tools that have no clear GUI superiors. Vim, Emacs, Mc for example. GUI wrappers over these don't make them better.

- Efficient, meaning fast and limited in scope so you can learn the whole thing.

- The muscle memory you develop is transferable to any new platform or OS you use.

- Often free and OSS so they can't be taken away, making the muscle memory a long-term investment.

- If you work in the terminal for any other reason there's less context switch.

bcrl 7 hours ago||
Muscle memory and awful connectivity in remote places (well, not even that remote for me) is what so many GUI apps undervalue, and I don't think the author of the article has ever thought of or encountered this. I loved TUIs back in the '80s and '90s when convention was so consistent across applications that muscle memory transferred seamlessly. Plus one could use a mouse to select menu options or the keyboard (like the many Microsoft programming environments like QuickBASIC, QuickC, Microsoft C as well as competitor products like Turbo Pascal and many others).

The low bandwidth / high latency lossy link problem is still a major issue. Cell phone service is sufficiently shitty in the area I live in that I have to use mosh to get a usable remote connection many times a year. Mosh is also quite useful while travelling! Got a crappy connection on a train or airplane? No problem. I have so much muscle memory with the mutt email client that nothing else has ever come close. Where's the equivalent of mutt's limit command in Thunderbird?

Try getting a usable VNC session when your cell phone hot spot is hitting 2-30 second ping times (yes -- thirty seconds) with only a handful of packets getting through.

Version 2 of the Amiga's operating system did a great thing in version 2 of AmigaOS which explicitly spelled out what conventions to apply (see Amiga User Interface Style Guide at https://archive.org/details/amiga-user-interface-style-guide). Modern GUIs that have weird meaningless buttons are infuriating. Even moreso when they lack obvious keyboard shortcuts.

TurboHaskal 1 day ago||||
I don't think TUIs are inherently better but some are simply too good versus the alternative. magit and k9s for example.
anon7000 13 hours ago||
Also CLI args to TUI are very useful. Like the k9s command flag to take you to any view. It feels more immediate than launching a separate app from the terminal
duskdozer 1 day ago||||
(other user) in my typical experience:

- keyboard can be used for pretty much everything

- less visually busy (no/less animations, background images/color variations. often close to plain text on plain background)

- more information dense (fewer things hidden behind hamburger menus, modals, drawers, etc)

- more/more easily customizable and documented

- more often can provide data directly into the terminal that I'm working in, so don't need to copy/paste through windows etc

these aren't necessarily impossible for GUI or universally true for TUI, but maybe I would guess just more an artifact of there being types of people who prefer working in the terminal who are then more likely to make TUIs, and I share their preferences more.

jmorenoamor 1 day ago||||
A good UI can be text, graphic, voice, etc.

I enjoy the usability and self perceived speed of not having to leave the console or reach the mouse to move a pointer when a cople of key presees is enough.

It's a matter of choice, I know, but I also think there is a genuine case for text over graphics. I see it everyday on businesses that keep old cobol tpvs at the cash, the speed at which the clercks check inventories or perform other crm activities is unmatched to mouse or touch interfaces

skeledrew 1 day ago||||
It's easier to automate TUIs, since it's just text.
benj111 1 day ago||
Nit. Surely it would be keyboard navigation? Your macro can consist of the key presses you would actually use, rather than trying to describe mouse movement.

If you want to automate from the perspective of what's on screen, tuis have no metadata. A button in a gui does have metadata associated with it, so you could automate 'click button x' where as in a TUI you'd be limited to clicking 'position x,y'

skeledrew 1 day ago||
You don't really need metadata to automate in a terminal. Literally everything is there in the clear and ANSI is used for control. It's all characters; no need to think about pixels (I made something that automates TUIs[0] BTW.

For GUIs you have to handle the particular metadata of a given framework, if it exposes metadata at all for the controls. Otherwise you're dealing with raw pixels which is an instant nightmare, though not so much now there are visual LLMs, but you're still paying for the tokens and/or extra processing.

[0] https://gitlab.com/skeledrew/jaiver

benj111 1 day ago||
Ah ok. I was thinking from the perspective of automating the input, for a human to view, rather than automatically getting data out.
skeledrew 1 day ago||
Automating input is just sending character codes. It's all wonderfully simple and uniform.
catlover76 6 hours ago|||
[dead]
More comments...