TUIs Are Underrated

I won’t bury the lead here: I think TUIs (Terminal User Interfaces) are underrated as a UI paradigm.

Now I’m someone who likes a good TUI. I like using them. I like building them. So I may have a slight bias here. But I’m wondering if TUIs are starting to see a bit of a resurgence, at least in software development. The modern example is Claude Code and it’s ilk, but it’s also seeing people using Vim and Emacs for their coding tasks. There are more than a few that are doing that where I work.

And why not? I think there’s quite a lot to like about the humble TUI. By the act of being something that is invokable within the terminal, it has some pretty nice advantages over some other UIs other there:

  1. It’s more approachable than a command based application, while still being cheaper to build than GUIs or web-based UIs. I’ve built a few tools at work that operate using a REPL, and after handing it over to others, I’ve heard complaints on how difficult they are to use. I’ve stared introducing TUIs after that, and they’ve told me they appreciate the simpler interaction model. They did profess their wish for a full-blown GUI which, for what these tools are, is something I can’t really justify spending the effort. But a TUI is rich enough for these tools made “on the side” without needing to spin up a full-on formal project.
  2. You can use it over SSH. This is probably only to those that work on Internet-based services, but if you’ve managing computers running somewhere else, you rarely have a GUIĀ at your disposal. It’s either SSH, an ephemeral Kubernetes pod, or something else that only has a character-based UI.
  3. You get context built in when you invoke it from the terminal. Current directory, environment variables, files supplied by arguments. All that is available to the TUI command up front, since you as the user know where you invoked it.
  4. You get terminal features like tabs for free. The TUI may have something akin to tabs or buffers in it’s UI, but if not, no worries. Just open another tab in your terminal and invoke another instance.
  5. They can be faster than using a mouse. I say “can”, because this is usually only true if you know the TUI front-to-back.

Now, obviously this is not the best approach for everything. Graphics, music, visual design; in fact, pretty much anything that doesn’t deal heavily in text will not work with a TUI. And there’s usually a learning curve involved with any of these tools, and that’s usually only worth the investment if you know you’ll be using it often. I don’t subscribe to the notion that every app needs to be approachable to newcomers at the expense of expert users: some things in life, you just gotta put in the effort to learn it. But not everyone wants to do that for everything, and I can respect that. Hell, even I have a very surface understanding of Vim and probably wouldn’t turn to it for my coding needs like my colleagues have.

So a TUI is not useful for every problem out there, but don’t rule them out completely. There’s still room in the problem spaces out there for apps with UIs made of line characters.