Live data from Hacker News

Stop Making TUIs

sockpuppet.org

91–100 of 579 posts

Re: Stop Making TUIs

#91
If there's anything that's anachronistic, it's native apps.

You want it graphical: Make a webapp.

You don't: Make a TUI.

What exactly is the use case for native apps? Even lots of legacy code can build to WASM now.

(yes, I'm exaggerating a bit, but not much)

Re: Stop Making TUIs

#92

Incoherent and far too long . Lists a bunch of things . Fails to make any clear points . Fails to give real reasons for the few claims it makes .

But it makes some things very clear:

- All those GUI windows look the same. How the fuck do I tell one app from the other?

- The abysmal corner radii are a clear indication of terminal macOS. Pun fully intended.

Re: Stop Making TUIs

#93
post #33

Earlier quoted context omitted.

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?

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 h…

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.

Re: Stop Making TUIs

#94
post #85

Earlier quoted context omitted.

It's easier to automate TUIs, since it's just text.

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'

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

Re: Stop Making TUIs

#95
post #70

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.

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…

[deleted]

Re: Stop Making TUIs

#96
> But there’s one of the problems with TUIs: even with a good framework, like Ratatui, Textual, or Bubbletea, you’re fighting the terminal to come asymptotically close to what every native framework does well out of the box. Scrolling and scroll targets are an obvious example.

maybe the answer is... you just don't need features like scrolling? this guy is trying to fit a square peg into a circle hole

Re: Stop Making TUIs

#97
post #85

Earlier quoted context omitted.

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'

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…

Ah ok. I was thinking from the perspective of automating the input, for a human to view, rather than automatically getting data out.

Re: Stop Making TUIs

#98

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.

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.

Re: Stop Making TUIs

#99

Earlier quoted context omitted.

So you have a cluttered list of terminal tabs instead of a cluttered list of windows. But with a worse UX?

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…

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.

Re: Stop Making TUIs

#100
post #97

Earlier quoted context omitted.

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…

Ah ok. I was thinking from the perspective of automating the input, for a human to view, rather than automatically getting data out.

Automating input is just sending character codes. It's all wonderfully simple and uniform.
Post reply on HN