This is nonsensical, there is nothing textual about the UIs being shown here. It doesn't stop being a GUI if you have a 1:1 representation of the concept within character cells.
The UX actually matters, and TUIs are generally built for effectiveness and power (lazygit being an excellent example). But once you start adding mouse clickable tabs, buttons, checkboxes etc. you left the UX for TUIs behind and applied the UX expected for GUIs, it has become a GUI larping as a TUI.
It's a TUI if it uses text to build those elements.
You can be effective and powerful in any kind of interface, Just like you can be ineffective and weak in any kind of interface. People like TUIs because they're cool, and work over SSH.
> there is nothing textual about the UIs being shown here.
Well, except:
> a 1:1 representation of the concept within character cells.
TUI is build from text, and living within its constraints and what it's engine (usually the terminal) allows. GUI is build from graphics, and has basically a pixel perfect control of its own. This is a very notable difference, especially at the time when these terms were coined.
> TUIs are generally built for effectiveness and power
No, this is a result of different architectures and their constraints.
> But once you start adding mouse clickable tabs, buttons, checkboxes etc. you
TUI and mouse are predating the GUI (more or less). We had them already 40-50 years ago at the dawn of interfaces. We are now just moving back to them for practical reasons.
The UIs are text only, so they are textual. Modern TUIs may support mouse events. That this tool can export to several TUI frameworks is evidence that these UIs are indeed TUIs, even if not the most traditional.
I think your comment is nonsensical.
Zellij among is a great example, I can do everything with my keyboard, but every now and them I'm already with the mouse and just click a tab or pane, no functionality lost, just added, why the need to make a cutoff philosophical/semantic hard argument?
Good insight, but if you discount the visual elements (tabs, buttons, etc), you're limiting TUI to CLI, and I think that's unwarranted. The value proposition of both TUI and GUI is two-fold: you see the available action options, and you see the effect of your actions. So, yes, TUI and GUI _are_ closely related: who cares whether we're displaying pixels or character blocks.
Unfortunately, they are often artificially differentiated by the style of the UX interaction: TUIs promote the keyboard actions, and GUIs prefer mouse without corresponding keyboard shortcuts. Unfortunately for GUIs, their designers are often so enamored with WIMP that they omit the keyboard shortcuts or make them awkward. I hate it when, even if the ACTION button is available by keyboard traversal at all, it requires some unknown number of widget traversals instead of being one tab away.
Since the keyboard is almost always used for the textual data, it makes sense to me to always enable it for command execution. Well designed GUIs and TUIs provide both WIMP and keyboard UX, which sadly is not the norm today, so here's my vote to make them larp for each other more.
Would you make the same argument for classic UIs created with things like Borland's Turbo Vision framework? It's generally known as a TUI framework (including by Wikipedia).
People don't build TUIs because they want to run apps in the terminal, they build them because the terminal happens to be the most portable app platform available.
I like TUIs keyboard-centric. Mouse can be a plus, but it should never be necessary.
I've been working with notcurses recently and it is a full TUI that handles mouse events just fine. Runs over slow SSH connections and everything. The nice part is that you can fully operate applications built on top of it with the keyboard if you so choose, the mouse is just a shortcut.
Sadly the project is not really in a usable state at the moment. The documentation is incomplete riddled with errors, the code has some pretty glaring bugs, and it's close to abandoned. It's a shame because you can do some really amazing stuff with it.
You might not like this type of interface, but it is hardly "nonsensical". In the 1990s this sort of text-based GUI was common in DOS programs, such as Borland's "Turbo" languages and the original pre-Windows FoxPro.
Yes and no. Early DOS UIs had elements of TUIs and GUIs, and supported mice. Many old school greenscreen applications were like this too.
lazygit supports vim style keybindings and mouse click and scroll. I mostly use the key shortcuts but sometimes the mouse is useful. But i agree that a well thought out state machine that can be navigated through via keyboard is a dream to work with. Lazygit is superb. But this is not a distinction between TUI and GUI.
> But once you start adding mouse clickable tabs, buttons, checkboxes etc. you left the UX for TUIs behind and applied the UX expected for GUIs, it has become a GUI larping as a TUI.
TIL that VIM is not cease being TUI the moment I type :set mouse=a.
Hot taking, LARPing and teenage angst (caused by generational gap with those has been using TUI since 1980s) is on your side.
My ancient boxed copy of Visual Basic for DOS 1.0 that supported mouse clicks on TUI buttons would have found your viewpoint quite offensive if it had any AI in it ;-) Oh boy, good old days.
The distinction is - if it runs over ssh (no x / graphics login) or on a headless machine - TUI
If it requires graphics login, even if it uses character layouts - GUI
IMHO the T/G is not for the display elements, it's for the type of session.
Man, I've had so much frustrating just trying to copy & paste from inside a terminal running e.g. opencode or crush.
I think TUIs are neat, I guess. But I think these things have abused the concept extensively. They don't actually interact well with the rest of a Unix environment.
This is exactly the kind of passive aggressive attitude that is tolerated on HN that makes this place unbearable.
"This is dumb" - gets downvoted to oblivion. "This is nonsensical + a bunch of absolutely bs reasoning" - second most upvoted comment atm.
HN tolerates the appearance of quality discourse over the actual thing, and dealing with this dissonance in most comment sections is exhausting.
Reddit moment!
As a german, I say:
UIUIUI
Drawing a “nonsense” line between TUIs and GUIs is pretty arbitrary, it’s all pixels on a screen at the end of the day. People like the TUI vibe, and that’s a good enough reason to make and use them.
> But once you start adding mouse clickable tabs, buttons, checkboxes etc. you left the UX for TUIs behind and applied the UX expected for GUIs, it has become a GUI larping as a TUI.
Hard disagree. Borland TurboVision [0] was one of the greatest TUI toolkits of the DOS era, had all of these:
> Turbo Vision applications replicate the look and feel of these IDEs, including edit controls, list boxes, check boxes, radio buttons and menus, all of which have built-in mouse support.
Well, I can’t remember if it had tabs.
[0] https://en.wikipedia.org/wiki/Turbo_Vision