The advantages of CLI's are (IMO) that they compose well and can be used in scripts. With TUI's, it seems that you just get a very low fidelity version of a browser UI?
The advantages of CLI's are (IMO) that they compose well and can be used in scripts. With TUI's, it seems that you just get a very low fidelity version of a browser UI?
[PWAs: Offline and background operation](https://developer.mozilla.org/en-US/docs/Web/Progressive_web...)
> that can be run remotely via SSH
Fair
> which doesn’t ship you megabytes of JavaScript
Not required at all; that would be a decision the app makes and not inherent to the medium
> works equally well on everyone’s machine
Provided they're using a compatible terminal with a compatible color scheme that doesn't just make everything unreadable.
> that would be a decision the app makes
OK but as soon as some moron with a Product Manager title gets their grubby little fingers on it the app does start shipping megabytes of JS in practice. TUI's can't, that's the advantage.
> which works equally well on everyone’s machine
Why are you so sure it runs equally well on everyone's machine? Even big popular TUIs like Claude Code do not really accomplish this.
TUI also means that I do not have to memorize an infinite amount of command line parameters.
I really like well-made TUIs.
For some reason, expressive keyboard-driven interfaces aren't as popular in GUI interfaces.
There are some things which are inherent to GUI or CLI interfaces.. but, overall, nothing ensures a TUI will be good, and nothing prevents a GUI from providing a good interface. -- The distinctions are generally going to be program specific.
So e.g. using openlens (GUI) vs k9s (TUI) vs kubectl (CLI).
- TUIs tend to be faster & easier to use for cli users than GUI apps: you get the discoverability of GUI without the bloated extras you don't need, the mouse-heavy interaction patterns & the latency.
- keybindings are consistent & predictable across apps: once you know one you're comfortable everywhere. GUI apps are highly inconsistent here if they even have keybindings
- the more limited widget options brings more consistency - GUI widgets can be all sorts of unpredictable exotic
- anecdotally they just seem higher quality
I've almost always got my terminal app open anyway, in the case of VS Code, I don't even need to switch to another app to use it.
I also worked with a mythical 10x developer and he knew all the Visual Studio keyboard shortcuts. It was just like watching that payroll clerk (well, almost, we had under-specced machines and Visual Studio got very slow and bloated post v2008), I don't think I ever saw him touch the mouse.
The popularity of TUIs is a result of the poor usability of current GUIs.
Though speed impacts are also something which I am uncertain about. Comparing Vim with IDEs, for sure there will be few things which are faster in vim but decent no of things which can be done faster in an IDE as well, so can't comment on your overall speed gains.
Use k9s for example. Let's say you want to determine where the value of an environment variable is coming from.
1. 'kubectl get deploy -n example' (find the name of the deployment in question)
2. 'kubectl describe deploy example-app -n example' (determine where the value for the env var is coming from)
3. 'kubectl get cm example-app-config -n example -o yaml' (check the value of the referenced key in the config map)
This is a very basic example but you can see where it lead to slow debugging that is made even slower by its propensity to typos and the need to look up command syntax. Once you get comfy in a well designed TUI, you can fly through this process in 10 seconds.
Http servers are not installed by default, and they are a pita to configure / secure.
UIs used to be more responsive on slower hardware, if they took longer then the human reaction time, it was considered unacceptable.
Somewhere along the line we gave up and instead spend our time making skeleton loading animations as enticing as possible to try and stop the user from leaving rather then speeding things up.
Further, when building ssh "apps" you can build out tooling for client clis that already exist (e.g. rsync, sftp, scp, sshfs). This provides ergonomics because now users aren't required to install extra tools to deploy static sites, for example.
The entire experience is pretty seamless since all developers use SSH anyway.
However running web apps over forwarding is pretty decent. VS Code and pgAdmin have desktop like performance running in the browser SSH port forwarded from a remote server.
That's the point. For me, with very few exceptions, modern web UI is steaming pile of dogshit - no consideration for user's attention, speed, or usability. TUI are extremely low fidelity; there's nowhere to hide all that enshitified cruft! Stripping the functionality down to its bare essence vs navigating a bespoke web UI with the design aesthetic of clown vomit. I can tell you which one is more productive for me.
I see one of the other comments mentions K9s. The exact same use cases manifest with that tool. YES, if it's just a one-shot, nothing beats the CLI. Many things where you need to investigate the resources a bit more, lend themselves to a TUI (or GUI if that's your thing).
I come from an era where folks could fly through tasks on dumb terminals. (AS/400 apps). The moment we gave them "better" gui tools, they slowed way down. No matter how many times we told them, "you can still use your TAB and ENTER keys!" TUIs were just a sweet spot.