Top
Best
New

Posted by underdeserver 1 day ago

Stop Making TUIs(sockpuppet.org)
350 points | 453 commentspage 4
inatreecrown2 13 hours ago|
The nice thing about TUIs is: they are platform independent. Whereas with SwiftUI apps you are bound to macOS.
raincole 12 hours ago|
TUI apps are only platform independent if you make them so.

GUI apps are only platform independent if you(r framework) make them so.

It's a quite common illusion that TUI apps are "automatically" platform independent. Even knowing which terminal emulator intercepts which shortcuts and how they handle width change, control character, mouse events, images, etc and design around them is not a trivial task.

On the other hand, making platform independent GUI apps haven't been easier. Just use Electron. Yes, performance blahblah, but thousands of Electron apps work on millions of machines just fine.

dzikimarian 11 hours ago||
They don't work fine. I run lot's of TUIs because they are snappier. You may bury this problem with money buying 64gb laptop, but that facade falls as soon as you launch local LLM and discover there's no space left for Spotify.
raincole 10 hours ago||
Believe or not, millions of programmers (presumably the most tech-savvy demographic) use VSCode for their daily job.
dzikimarian 8 hours ago||
Because it currently has best support for their stack. Being tech-savvy means also you understand, you can't move entire plugin ecosystem of vsc to notepad++ and call it reasonable.
gr_norm 13 hours ago||
Agree with the rest of the comments here: keep making TUIs. Fully keyboard-driven, compact interfaces that live in my terminal with the rest of my CLI devtools are the best!
cpach 7 hours ago|
This makes me curious. What are your favourite TUI applications?

The only one I use is Copilot (inside of a VM). ALl other applications I use are GUI/CLI/webapps.

folkrav 3 hours ago||
Not OP but, I regularly use :

  - yazi as a file explorer
  - lazygit for git
  - tmux/zellij as multiplexers
  - fzf left and right for a bunch of utils (terminal history, switching between projects in zellij/tmux when working in multi-project workspaces, etc)
  - neovim as a text editor
  - glow for markdown reading
  - currently on pi for my home harness, CC at work
I'm probably missing a few but those are the ones I use more or less daily.
eloisius 1 day ago||
The LLM fetishists really do themselves a disservice with these wild, over-the-top statements about AI capabilities. I’d be willing to bet money that giving Claude a screenshot of part of this blog post would not producing “something useful” for any reasonable interpretation of useful. This reminds me of a line from Peter Diamandis’ Abundance (basically the only thing I remember) that described Google using a “stroke of HTML” to organize the worlds information.
anon7000 12 hours ago|
It’s extremely easy to try it and find out. No reason to bet money.
JoshTriplett 1 day ago||
You know what's awesome about TUIs? They live in a tab in my terminal. 95% of the time, my system has three windows open: terminal, browser, Signal.

Please, make more TUIs and web apps, so they can live in my terminal or my browser.

walrus01 1 day ago||
Additionally, I can with very high confidence run TUI software inside an ssh session to one of my headless machines, and then further within gnu screen or tmux detach and later resume a session with everything I was doing. Even if I switch from my laptop to my desktop, or want to leave a bunch of stuff waiting for a week and come back to it later.

Once you get the key bindings for screen or tmux thoroughly memorized it's very easy.

funlang 10 hours ago|||
Exactly this. Being able to attach to a tmux session over SSH and pick up where I left off is a killer feature for me. No GUI remote solution comes close in simplicity and responsiveness.
altmanaltman 13 hours ago|||
Okay but TUIs don't matter here though right? You can easily run GUIs over the web with any box anyway if you wanted to. So how is your headless sever running 24x7 (which is what allows feature you talk about, not tmux or tuis) not the reason you can do that but TUIs are?

I have a windows box that never shuts down and i remote into it and use it GUI mode to do everything you said but with a proper GUI interface. I also use the terminal but your feature (constantly up + resume + multi device) does not need TUIs to even work.

dual_dingo 11 hours ago||
A server needs a lot more things to have a GUI compared to what's necessary to just run an SSH daemon that offers CLI/TUI access, where SSH is just providing secure network access for the most basic interface the server has anyway (the TTY).
altmanaltman 6 hours ago||
Okay but the way the comment described their workflow implies they have a pretty solid server where they actually "work". My point isn't TUI vrs GUI, my point is that you cannot say TUIs are better because cloud computing exists. You can easily replace TUIs with GUIs and enjoy the same features that cloud computing provides, so what makes TUIs special? Is it because they are lightweight and don't consume as much resources? That depends on the app itself, there are several lightweight apps that use a web-based secure GUI instead of TUI, so why specifically do you want to be in the terminal?
8cvor6j844qw_d6 1 day ago|||
Bubble Tea [1] is my favorite for one-off throwaway stuff in terminal. Wish [2] to make it available over SSH.

[1] https://github.com/charmbracelet/bubbletea

[2] https://github.com/charmbracelet/wish

ludwik 1 day ago|||
Why this is preferable? I would rather have the apps I use represented as a list of apps in my system (drawing on a couple of decades of established UX conventions for how they are displayed and how I can interact with them), the web content I'm reading represented as tabs in my browser, and my terminal sessions represented in my terminal. You present the destruction of this simple separation of concerns as a benefit, but don't explain why it is one.
croon 1 day ago|||
If age of conventions is a valuable metric, TUIs have more. The keyboard hasn't change noticeably, and I can work way faster between separate windows/panes in a terminal and tmux, than in various GUI windows, where mouse focus dictates when I can start inputting.

While a mouse can theoretically use all pixels of a screen, in practical terms a keyboard has a much larger input space than a mouse, and if I can keep both my hands on the keyboard, I can work a lot faster.

At least that's my experience as a (starting) greybeard.

jauntywundrkind 1 day ago|||
> You present the destruction of this simple separation of concerns as a benefit, but don't explain why it is one.

And you present the division of this simple unification of modalities as a benefit, but don't explain why it ought be many.

So far it's all just preference.

I'm not going to deny that the terminal has a ramp, is a lifelong learning curve. But I personally find it much more earnest, much closer to what is really happening, with less intermediation, and the way that terminal conposes with other things is usually unbeatable. TUI for humans, jsonl event sourcing for machine-to-machine.

> drawing on a couple of decades of established UX conventions for how they are displayed

I tend to not just click random apps open. I tend to have done some research and found what options there are on my own. I tend to know what I'm looking for, by the time I'm going to run something. In terms of getting there, finding stuff: the best convention I know of is aptitude, and dselect before it. Both very fine very old tui systems, and clear cuts above any app or web store, imo, for its power, directness, clarity, intent, and script ability.

octocop 1 day ago|||
I was going to post this but you beat me to it. I think we need the folks whom do not enter the terminal to start using it instead of the other way around.
Gud 1 day ago||
Don’t be so sure about that..
underdeserver 1 day ago|||
So you have a cluttered list of terminal tabs instead of a cluttered list of windows.

But with a worse UX?

lelanthran 1 day ago||
This is the thing - my window manager can manage windows just fine. I suppose you can make the argument that managing multiple terminals in a tab is a better experience than managing multiple windows in my window manager, but that depends heavily on the terminal being used and the window manager being used.

As a devils advocate in response to all the comments claiming TUIs are fine, maybe consider TUIs mostly do not come with many of the advantages of using a terminal CLI app - you can't pipe data into them, out of them, spawn them and collect the output, etc like you can with the usual stuff you run in a terminal.

IOW, they are a reduced functionality of a GUI - resizing works poorly, scrolling works poorly, UI affordances are poor (sure, you can grey out a button, but drag-n-drop hardly ever works between your various terminal tabs, and the smallest UI element is a full character block, unlike a GUI where you can have indicators that are smaller than a character, mini-windows, etc), lack of widgets, etc.

The lightweight argument is not so good either - look at Claude Code, after all. If you want lightweight GUIs, you can do that too.

The only argument that stands is the ssh one, but if working via a remote connection, I'm not going to want a full functionality application anyway - why would I prefer a wordstar/wordperfect interface to a complex document over a GUI interface? For simple documents, sure, TUI all the way, but when I have multiple panes (outline, minimap, status bars, toolbars, etc), it performs poorly in a TUI.

TUIs are making a resurgence, sure, but only in the context of developers and development.

rpdillon 1 day ago||
Whether or not you can pipe information into a TUI is a function of the implementation of it. I've written command line apps that are dual function. When you invoke them with no arguments, they launch the TUI, but when you pass an argument, you can get them to behave like a normal CLI. I don't think this is the norm, but there's no reason it couldn't be more widespread, I don't think.
ghostpepper 1 day ago||
Your argument in favour of TUIs is that they can be, in fact, not TUIs and actually CLIs
rpdillon 23 hours ago||
They can be both!
eviks 7 hours ago|||
> They live in a tab in my terminal.

So you can't even immediately switch to your app and don't see it in an OS-integrated list?

orbital-decay 1 day ago|||
If that's the only justification, a good window manager might turn out to be a lot more convenient.

Terminals are great for CLI. CLI integrated into GUI/TUI is absolutely amazing, but 99% TUI apps do not work like that, they're just awkward crutches foreign to the terminal, so you get no upsides and all downsides. Examples of good CLI integration I regularly use: Kate, Zed, Dolphin, Total Commander, pi. Only one of them is TUI, and honestly it's much worse off with it, since it has to display a ton of formatted text and sometimes pictures. It's really inconvenient and just looks like cargo cult rather than a necessity.

rpdillon 1 day ago|||
Indeed, I've been on vacation this week, but wanted to continue working on some of my hobby projects while I'm in the mountains a bit. Being able to use tailscale to SSH into my home workstation and attach to Tmux with my full session of agentic development, server, notes, design, and everything else has been an incredibly fun experience.

Native UIs simply don't have the same flexibility.

Edit to add: I didn't bring my laptop; I'm working from Termux. Surprisingly effective! The code is all in a folder syncing with my phone via SyncThing, so I can try out the sites I'm working on directly on the phone.

thomasfromcdnjs 1 day ago|||
I built "ssh sshfighter.com" recently, enjoy!
fragmede 1 day ago||
Mine's funky.nondeterministic.computer
thomasfromcdnjs 1 day ago||
So great =D
boxed 1 day ago|||
Couldn't you then just vibe code some window manager app that throws a bunch of your stuff into a tabbed window? Seems like the same thing.
walrus01 1 day ago|||
> Couldn't you then just vibe code some window manager app

My reaction to this is basically about the same as the fictional Ivan Chesnokov

(beware, crude language, profanity, etc)

https://m1-garand-rifle.com/ivan-chesnokov.html

duskdozer 1 day ago||||
How would that be any better though?
boxed 1 day ago||
If the point is only that "terminal good because tabs" then that solves that problem
folkrav 1 hour ago||
I read the point as "it runs in the environment I already use" for everything else, not "there are tabs".
benj111 1 day ago|||
It already exists. Tabbed by suckless.
hollerith 22 hours ago|||
I used to work like that (minus the Signal window) and have no desire to go back.
benj111 1 day ago|||
>or my browser

But then a load of others will complain about electron apps.

Further you then have an os within an os. You need to remember to look in your bookmarks, not your start menu. And you're basically throwing away the window manager too.

JoshTriplett 20 hours ago||
> But then a load of others will complain about electron apps.

I want to run web apps in my browser. I understand why Signal isn't a web app, and I'm willing to put up with that for security, but nobody else gets that excuse. Web apps belong in a browser tab.

AtHeartEngineer 1 day ago||
and music
trollbridge 1 hour ago||
LLM agent harnesses make it possible to do: CLI, TUI, REST API, web front end + Electron, native (I do macOS first, which then makes iOS/iPadOS almost trivial, followed by Android), and if I’m feeling ambitious, Windows (native) and Linux (usually Qt).

It’s much easier for the clanker to loop on testing / improving the TUI than a real GUI. It also means it can work on the app without an API/REST/HTTP/Java/Script ball of mud in the middle.

zorked 1 day ago||
Haha, no. For a while, many years ago, it seemed TUIs were indeed on the way out, but then they were relived by the awesome work of people who wrote GPU-accelerated terminals, widget libraries, who extended terminals with more colors and the ability to show Unicode and graphics.

I salute you, heros.

PaulRobinson 1 day ago||
Yesterday I was flipping between some TUIs, native apps, web apps and an electron app. I think it was only because I was trying to do a lot in each of them I became really aware of the latency lag in some of these.

There are real advantages of TUIs: less CPU; sometimes I want to be using a personal TUI on a personal dev server quickly from a work laptop at lunchtime and an ssh + tmux + TUI is perfect; most modern TUI libraries are significantly less painful to work with than most modern web app frontend libraries; I can change the font size of my terminal easily if I need to, more easily than native (but not web app). But by far the biggest, is they just generally tend to be very fast and responsive compared to everything else.

codethief 22 hours ago|
> I think it was only because I was trying to do a lot in each of them I became really aware of the latency lag in some of these.

While I get your point, a lot of vibe-coded agent TUIs (Claude Code, GitHub Copilot CLI, …) aren't exactly fast, either.

jbstack 12 hours ago||
A lot of vibe-coded GUIs aren't fast, so this particular issue changes nothing. You're describing a property of the software development method, not TUIs vs GUIs.
jbellis 6 hours ago||
Unfortunately we seem to live in an era where your mainstream choices for a cross platform app are "Electron taking 1GB when idle" and TUI.
tomaskafka 6 hours ago|
No, that is 2 years ago era.

Now it’s “native apps for 5 platforms done almost for free” era for anyone who cares.

See Meta’s new AI desktop app (no, I won’t install anything from Zuck on my computer, but I appreciate what they did).

xgulfie 5 hours ago||
> Now it’s “native apps for 5 platforms done almost for free” era for anyone who cares.

Can you elaborate?

the__alchemist 5 hours ago||
Three broad notes:

- I'm team GUI! The author outline elegantly why. Sometimes I put command-line-like things in the GUI; I generally view it as a superset of CLI, with vastly richer capabilities. This is kind of interesting in the bioinformatics/structural bio space, which I feel is inherently visual, and benefits from 2d layouts. Most of the tools are CLI and based in I/O of stdout and text-based files. I am taking a different direction!

> Back in 1999, Neal Stephenson wrote an essay about command line interfaces that set the field of human-computer interaction back about 20 years. In it, he depicts the priesthood of Unix nerds wielding CLIs as powerful Morlocks, holding the entire computing industry on their shoulders. The Eloi use GUIs like Microsoft Word. Because this is high-test fan-service, “In The Beginning Was The Command Line” has become one of our field’s sacred texts, despite very little of it holding up 25 years later.

We should not take Sci-Fi and creative plot devices as predictions for the future. They can be inspirations and motivations for your own creativity, if tempered by realistic expectations and discipline. Neal Stephenson is especially prescient (Certain concepts from Fall; or Dodge in Hell and Anathem are hitting home strongly right now!). He spins vibrant, speculative yarns, mixing concepts, and estimating trajectories. The story referenced he is one that's in particular easy to see what parts did and didn't pan out. (And what Neal's more recent reflections on it say)

I think there is a bit of cultural identity (Which we are genetically inclined to insert in all sorts of places!) going on. There is a certain cyberpunk fun in SSHing a terminal, pipeling stdout/in together, and Viming. I suspect there is a high overlap between people for whom Linux is part of their identity, TUI use is as well. I.e, it's not about a practical weighing of merits; standard identity/tribal-based choices.

FOr use of TUI as a general file browser/command-executor... I've made my own. It's a GUI, and has built-in terminal for executing commands, with a visual file browser. And most importantly: Shortcuts to execute commonly-used workflows, history, bookmarks etc. All of which I feel like are glaring things missing from standard terminals. (PS, Bash etc). And having a terminal as one part of a multi-window program feels like a good use of my screen space!

cushychicken 2 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/

More comments...