Top
Best
New

Posted by underdeserver 1 day ago

Stop Making TUIs(sockpuppet.org)
339 points | 434 commentspage 3
krzyk 7 hours ago|
Benefit of TUIs is that sometimes they are extension of CLI.

Sometimes I can use `du` to check what uses so much space, but sometimes ncdu is better for me.

And the best part - I can use both when I ssh to another machine, using the same command line, without thought. While GUIs need added thought, to switch from CLI to GUI on the remote one would need to use a different interface, or have X11 forwarding on (which is also a good option) and x11 libs on the other side.

Or use some other connectivity. ssh is simple, works on most servers I have access to.

vidarh 7 hours ago|
> And the best part - I can use both when I ssh to another machine,

Exactly. I'm currently on vacation and has checked in on long running Claude Code sessions over ssh every few days. I could have used X11 forwarding or VNC if I needed a GUI app, but the connection I'm on is currently slow and unstable, and using text mode has been far more palatable, especially since I can use tmux (or in the case of Claude Code, just using "claude agents" and let it background the sessions itself).

akho 10 hours ago||
A wiki that's somehow not in a browser, a tv remote replacement without obvious keyboard shortcuts, a jupyter lookalike with no editing (as far as I can tell), and two chat interfaces with skills. Good for you, but not like how I use computers.
steve1977 9 hours ago||
TUIs are really the worst of both worlds IMHO.

The one advantage that a terminal has, is that commands can be concise and scriptable. But that only really applies to CLI.

A TUI is just a poor man emulation of a GUI, without any advantages.

cerved 4 hours ago|
The advantage is that you can run it in a terminal... So in tmux, over ssh, etc.
steve1977 1 hour ago||
Why or how is that an advantage over proper GUIs via some remote desktop protocol?
anthonj 1 day ago||
"I built my first serious Mac application"

I will just stop here. No hates for macs, but your typical cli/tui software devoper is concerned about making their software run on almost anything with an actual os. As soon as I see references to specific operating systems or platform specific libraries my bullshit meter goes off.

I was expecting an article about methology and tooling to develop guis, got an apple fan telling stories about ai use.

anon7000 12 hours ago|
This is covered towards the end of the article.
anthonj 9 hours ago|||
I only see a bunch of references to swift (very much not portable), but I did skip the Q/A style section. I see he mentions portability, but still no mention of actual portable frameworks. The word "macOS, "apple" or "swift" appears ~7 times each. No mention to any other GUI framework other than ...a link to the bloomberg terminal website? I would find the title less misleading if it was "I like swift".

Let say someone, as windows or linux user, clicks on this article claiming he/she should stop "doing TUIs", what take away message should he get from it? "GUIs just looks nice but sucks you have no swiftui"? Personally, I was expecting a developer's angle on GUI programming.

ta8903 9 hours ago|||
It's only "covered" by saying

>But remember: I’m not really building applications for other people to use. I’m building them for me.

What's the point then? What's the point of writing an entire argument proselytizing towards application developers and ending with saying you're only talking about applications you're writing for yourself?

cavem0nkey 1 hour 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.

yipinwong 3 hours ago||
The site layout is great for reading, so props to the author.

I understand the sentiment that TUIs is not as accessible, sucks to use. I still do not like the fact that we should "stop making TUIs" altogether.

Let me give you an example from my carpenter friend in Cananda. He has a saw (TUI) and electric one (GUI).

He uses the saw in diff ways than his electric one. He sometimes extend the saw by attaching it to end of a long stick to cut tree branches he cannot reach. He can do it with the eletric saw but requires much more effort.

But if he needs to cut down the tree, he uses the electric one, and sometimes finish off (trim) with the regular saw (so the tree falls in certain direction).

The gist is, TUIs can be used to do things quick and dirty, and easy/cheap to make/buy. GUI even with AIs, still not as cheap as TUIs to build.

TUIs has a different usage in our field, where it's used more for automation/piping. If you have GUI, it's hard to pull it off unless you build the functionality (which coulda been a command in TUI), and expose it via GUI. the Authros is focused more on consumer side than builder side. With AIs we will all be builders using AIs.

Lastly, shooting down people building TUIs is saying, no more innovations, by building upon other's TUI inspirations.

FabCH 1 day ago||
Counterpoint: Build more TUIs in Rust using Ratatui: https://ratatui.rs/

Why? Because just look at the examples on that page.

blooalien 1 day ago||
Or for those coding in Python there's Textual: https://textual.textualize.io/

Or for Go coders there's BubbleTea: https://github.com/charmbracelet/bubbletea

Why? Because TUI!

wiseowise 9 hours ago|||
> Textual

Please, don't. One of the main benefits of TUI is being able to freely copy text, I hate opening Textual application and being dropped into this canvas like state.

ChickeNES 10 hours ago||||
Heh, I have one in C23 with Ruby, Python, Go, and JS bindings...may have gone overboard. Not going to publish though until I have dogfooded it enough though :P
intelkishan 9 hours ago|||
Yeah Textual, is pretty good. I have been building a CYOA(Choose-your-own-adventure) game using it
eviks 7 hours ago|||
Looked and see all the same awfulness expected of a textual interfaces where drawing a vertical line is not trivial, so many have gaps instead because they don't know they need a different character Or where the gaps between elements is huge because your min width is bounded by a char. Etc.
swader999 9 hours ago|||
You had me at the name. Love that movie.
arxari 10 hours ago|||
Look at the dependencies in the cargo.toml file.
FabCH 12 minutes ago||
I don't really understand this comment. Anything in particular I should be looking for?
cpach 6 hours ago||
IMHO those screenshots look far from enticing.

I guess it’s a matter of taste ¯\_(ツ)_/¯

FabCH 5 hours ago||
Visual things often are.

I love the visual style. It's especially interesting to set the colour scheme to the orange/yellow glow of reaaaly old school terminals.

blipmusic 11 hours ago||
Keep making TUIs. Keep making whatever you want. These "terminals weren't made for that" kind of comments are a bit tiresome. I can run TUIs on machines I only have ssh access to and they are often leaner than the corresponding GUI variant - though perhaps less so with today's fancier TUIs. 'top' has a TUI and isn't exactly new, some interactivity - yes, even in a terminal - can be nice.

I'm currently trying to create a GUI version (immediate mode library) of a CLI tool of mine and it's mostly a shit show and three times the work of a data-in-data-out CLI tool. Good learning experience, though. I should note that I don't care whether the GUI version has a "native feel" or not (if you have the time to do so, be my guest), only whether it's functional and reasonably fast, since otherwise that's even more work for an open-source tool. Though, when I undoubtedly make the more interactive TUI version later on (ratatui just seems too nice not to try! :-)) it will probably bring a similar complexity development wise.

Then again I'm not into agentic coding at all so maybe the joke's on me. On the other hand, at the moment I need to learn about the data I'm processing, the GUI library/framework I use, and being able to help the people I work with troubleshoot the equipment that collects said data. I'd miss out on most of that if I coded by prompt. Perhaps I'll try later, perhaps not.

Keep making TUIs, or GUIs for that matter.

petesergeant 11 hours ago|
I’m absolutely into agentic coding and you’re still right. A TUI can live easily in a tmux window on a machine I can SSH into from my phone. Also: yes, you can vibecode a UI, but the author’s point reduces to absurd conclusion that you shouldn’t write and distribute any software at all.
cushychicken 1 hour 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/

Surac 1 day ago|
TUI is a kind of self defense. big corps create and kill gui frameworks faster that one can learn them. Browser based ui is a real waste of resources (and also evolve in a absurd pace). The Console is a last resort to write small (understandable) gui that work on many platforms.
fp64 7 hours ago||
I like browser-based UI, as they offer similar advantages to TUIs: You can use the UI on a different machine than the application itself is running. Arguably, modern Web standards also lend themselves to some elegant code design for UI. However, the "waste" is a valid point, but then again your TUI (and many GUIs) will fail on those things that cause the "bloat" of a browser: support for the weirdest encodings, dealing with the most absurd edge cases, supporting the largest amount of devices in a uniform manner. Shipping a whole electron for your crappy app is not what I mean. This should stop, as it trades all advantages for almost only disadvantages.
no-name-here 1 day ago|||
Are the TUI apps built on TUI frameworks? Do the TUI frameworks last longer than the gui frameworks you mentioned being quickly killed by "big corps"? In the Windows space, WinForms, WPF, WinUI are likely the biggest examples of gui frameworks, especially from "big corps"; they've been around for decade(s) and have not been abandoned (/ they continue to be supported) - how do TUI frameworks compare? On the other hand, TUIs may be better for things like running over SSH, and for cross-platform compatibility - important, yes. Although for x-platform, things like Avalonia or Uno could be better comparisons?
cbarnes99 1 day ago||
Curses, the TUI library, has been around since 1978. It was superseded by ncurses in 1993, which saw it's latest update in December of 2025. Both of them still work and can be used today, with the caveat that the official original curses has been deprecated since 95, but NetBSD maintains an updated version iirc.
underdeserver 1 day ago|||
They generally stay supported, or if not supported, working.
0x457 1 day ago|||
Huh? Qt, GTK, Cocoa (AppKit and UIKit), bunch of other linux friendly gui frameworks been around for a long time, even Flutter is still around. What is being killed?
Shank 1 day ago|||
Apple believes SwiftUI is the future, not AppKit and UIKit/Cocoa.
0x457 1 day ago||
Sure, Apple positions SwiftUI as its primary forward-looking UI framework, but AppKit and UIKit still developed and have access to all API that SwiftUI has.
lenkite 7 hours ago||
"AppKit and UIKit still developed and have access to all API that SwiftUI has."

No they don't. Many components are SwiftUI only.

throw83949390 1 day ago||||
What versions of QT and GTK? Running GTK1 or 2 apps is pretty hard. P TUI apps from that era work just fine!

The same reason webui and js is so popular!

0x457 1 day ago||
There were 4 (four) major versions of GTK since 1998. You're telling me that rate is faster than you can learn? Maybe you just a slow learner.
worthless-trash 1 day ago|||
gtk1/gtk2/gtk3 code will require you shipping gtk(version) on modern linux, not all distros have the legacy libraries.

Apple deprecated carbon (which was a thing when gtk1 was around). I don't think you have an option for this on their ARM hardware.

QT1->N code has the same problem, the older libraries are not shipped on most modern linux.

I do absolutely understand if you're going to do static compiles, that can work around that problem, but that arguement nullifies everything, since you can run/write/execute anything in a turing complete system, if you complain you're just not dedicated enough.

0x457 1 day ago||
Carbon was released in 2000 and final release was in 2019. Cocoa, correct me if I'm wrong, was released in 2005. That's 14 years to learn it. Not like you knew Carbon when Cocoa came out because there were like 10 developers making Mac OS X apps before 2007.

y'all are slow learners if that's an issue for you, but React doing major breaking changes at least once a year is totally fine.

ssivark 1 day ago||
We're in an era where soon (if not already) it will become straight forward to direct a clanker to move an application from one gui framework to another.

Once we have robust automated computer use, that becomes the verification loop, and this problem will almost surely get solved.

More comments...