upvote
Yes. A TUI runs in a text session. A GUI runs in a graphics session. A terminal emulator emulates a text session in a graphics session - and allows you to run TUI/CLI tools. This is apparently controversial?
reply
> TUI runs in a text session. A GUI runs in a graphics session

What do you mean by this? I have never heard these terms before. I can launch and interact with a GUI from a text application, or a text application from a GUI.

reply
It makes far more sense in the context of effectively a remote session or dumb terminal serial connection. Your "terminal" application is only emulating a text mode environment inside a gui, typically... you can ctrl+alt+F2 - F5 in a lot of Liknux's to switch to a terminal session if you want, but that's not what people tend to actually use.

Beyond this, without remote X properly configured, again, most don't and probably shouldn't.. you aren't running remote gui applications over an SSH session. Richer TUIs were pretty common in ye old days of DOS and other OSes before rich GUIs become the norm. DOSShell, Edit.com, etc. The IDEs of days past and Word Perfect even. These all interacted with Mice and were considered the norm. The features that allow this over a remote terminal today are pretty great IMO, the harder part is properly handling window sizes/resizes, etc.

With graphical extensions, there are even nice app explorers with image previews via TUI. It pushes the boundaries. For that matter, I often wonder what could have come with RIPscrip/RIPTerm if the leap to web didn't happen the way it did...

I think the single hardest part of TUI is dealing with wide characters and secondary fonts for color emojii that don't quite render in 2 spaces completely in a lot of termianls... it makes the line drawing harder too.

reply
A remote GUI application now runs in a special client called a web browser; it's a recent development, barely 35 years old.
reply
These sarcastic reddit style comments grate me. And it's also inaccurate, you're not runnning remote graphical applications from a remote headless webserver. You're rendering it locally.
reply
He's functionally right though, a remotely served interface can be implemented as a TUI behind ssh, or it could be implemented as a website. Which is the better option depends on the context, but they're both serving the same function, and the terminal emulator you're using to view the TUI is most certainly rendering it on your computer.
reply
An X server also normally renders things locally, as does a VT-compatible terminal. If you want no local rendering at all, there's VNC.

With a web app, you can slice and dice processing between local and remote by running JS locally. Most processing usually happens remotely though, and only the display and command logic is run in the browser.

reply
Is it character mapped, designed to run in a tty terminal? TUI.

Is it pixel or vector mapped, designed to run in a graphics terminal? GUI.

Of course strictly speaking TUI is a subset of possible graphical user interfaces, but the term GUI was coined to denote interfaces other than the already-ubiquitous text terminal interfaces.

TUIs have since absorbed GUI interface elements like buttons, checkboxes, and even pointer input, which I think is causing the terminology complaint here. Classical TUIs like Norton Commander are more about keyboard input and navigation. But being text-mapped is the identifying feature of a TUI, I think most people accept.

reply
In the Linux world, your GUI is built on a stack of separate programs. At the bottom is the "display server", such as X11 or Wayland. One of these needs to run to have GUI windows (or a full-screen background) at all; otherwise the screen is just covered by 80x24 terminal, and even if there were mouse support there would be nowhere to click or drag to change that. Without the display server, you are in a "text session". It's relatively rare to do this locally nowadays, but Linux still adheres to the highly modular UNIX philosophy.

Your terminal windows (whether that's "Terminal" or "cmd.exe" or anything else) are still fundamentally graphical programs that emulate such a text session.

reply
Sometimes your system doesn’t have a graphical session, like a raspberry pi with no x server running, or a cloud compute instance I’m ssh’ed into, or a docker image running on my laptop. Sometimes your system doesn’t have a (particularly usable) text system, like a work computer that disables the terminal or a family member’s MacBook who doesn’t have the time or space to install XCode terminal utilities to be able to use things like brew install.

My point is that it’s not a given that having one means you have the other.

TUIs are wonderful for the first case.

reply
Perhaps he's thinking about "console" / "display server" but the lines blur fast (e.g. you can run GUI in linux console with framebuffer with some limitations)

- https://en.wikipedia.org/wiki/Linux_console - https://en.wikipedia.org/wiki/Windowing_system#Display_serve...

reply
It feels like a reference to DOS graphics mode.
reply
It's a TUI if it uses text to build those elements.

No. All you've done is make a low-resolution GUI.

reply
TUI means "Terminal User Interface" or "Text User Interface"

A GUI that is built with Text, and intended to be used in a Terminal, is what a TUI is, colloquially AND definitionally.

What do you think qualifies as a TUI?

reply
This is a pointless semantic argument.

Of course you can use the primitives of TUI, especially with mouse support, to reproduce a large amount (if not all) of the standard GUI interaction paradigms.

But it's bizarre, and missing the point from a UX perspective.

As an extreme example, we can imagine a program that displays the borders of a 40x15 "window" in the middle of a console, with box-drawing characters, putting a "close box" in an upper corner, with text like "File Edit Help" in the top left. We can imagine it responding to a click on the "File" text by popping out a "menu"; we can imagine a drag starting from the "title bar" causing the window position to be update (and the entire terminal window redrawn).

A lot of those kinds of functions, ironically enough, might make sense for a TUI editor implemented as a TUI (except the "windows" might just be understood as panels where the ultimate program displays parts of its output). But as an emulation of GUI windows, it'd be a strange, impractical novelty.

reply
What's with the purism? It's just a term used to differentiate one way of making a UI from another. Who cares about what is practical when you're just trying to give a thing a name.

Even in your example, it's pretty clear cut. If the window is built with text and served in a terminal emulator, it's a TUI. If you build it with a graphical framework that now needs X11 or whatever, it's a GUI.

This is just needlessly pedantic.

reply
I've been using TUIs since PR1MEOS mini-mainframes in the early 1980's, I know what I'm talking about.

The issue is not the text. It's the WIMP interface.

reply
Define TUI. I'm genuinely curious what it means in your context.
reply
Yeah, that's the point. Why did you think you needed to say it?

It's a GUI that works over SSH. There is a very valid use case for that.

reply
I assume his point is that making stuff that assumes a mouse makes for a bad text-based UI. Absolutely fine if everything is controllable via the keyboard, e.g. if the tabs were labelled F1-Fn and they function keys switched them, or they had an underlined letter and Ctrl+letter switched focus to it, or whatever.

But if this thing requires you to just tab a lot through lots of pointless and rarely used fields to get to a "button" so you can activate it, because it's really all designed to be used with a mouse, then it's a bad text-based UI.

There are some incredibly good text-based UIs around, some going back to mainframe stuff from the 70s. Most of them are optimised for speed of control via keyboard rather than for looking pretty. Almost none of them would be quicker to use with a mouse.

reply
absolutely, but it's still a TUI. Just like if you made a GUI that didn't have any mouse support and needed all keyboard shortcuts, it wouldn't stop being a GUI.
reply
TBH I've always hated the backronym TUI anyway, so if TUI includes things that require mouse input, then maybe we can go back to using "text-based UI" for things that only require a keyboard like we used to 30 years ago.
reply
Would you say old DOS applications like Borland's Turbo series of compilers were not TUIs? They ran in the console but had menus, mouse support, dialog boxes, etc...

How about those text games that used ASCII art and you typed in commands like "look" and "go north"?

I would say using text mode is the primary requirement for a TUI. The other requirement being some kind of human-machine connection, IE a User Interface.

reply