Remix.run Logo
omarvanez 6 hours ago

I've seen lots of TUIs lately, why is that? What is the renewed interest?

The only places I know of is Awesome TUIs [0] and terminaltrove [1]

I can also see that Ratatui has an awesome list too [2].

[0] https://github.com/rothgar/awesome-tuis

[1] https://terminaltrove.com/

[2] https://github.com/ratatui-org/awesome-ratatui

laserbeam 6 hours ago | parent | next [-]

> What is the renewed interest?

We just don’t have good desktop GUI platforms anymore. Qt and GTK are massive beasts, Windows changes theirs every 4 years (and no one wants to be tied to a single platform anyway), we don’t want to deal with Electron, and writing your own GUI from scratch is hard.

Terminals just got good lately and it’s way easier to make something higher quality in them than as a GUI. It’s just too hard to make a good small desktop app.

It’s the same reason why it’s easier to make something look great with LEGO than if you want to mold clay. I’d also wager that devs today on average know more about good UX than devs did back in the 80s when clunky terminal apps used to be made.

dualogy 4 hours ago | parent [-]

Godot is neat for personal tool-making where I just need a small gui with basic controls and can express the whole proggie in just GdScript (API has sufficient OS interactions for most needs), I just whip it out for those when I otherwise don't really use it anymore, just keeping it around for that. Stuff like that: https://postimg.cc/VJc0pWbB

bodge5000 16 minutes ago | parent [-]

I love Godot and think it has a great deal of potential for this kind of thing. Sure using a game loop isn't really very efficient for basic UI application, but in your case that doesnt really matter too much. That being said, I really don't like how it handles UI themeing.

Buttons are a good example. If you want to define a button theme, you have to individually define the theme for every possible state the button can be in. No inheritance, the best you can do is copy and paste them over (which means if you want to tweak one, you have to tweak them all). Compared to something like CSS, its a nightmare to theme even slightly interactive Godot GUI's

genidoi 6 hours ago | parent | prev | next [-]

TUI libraries have sufficiently abstracted away the low-level quirks of terminal rendering that the terminal has become something like a canvas[0] available in the IDE with no extensions. This is quite a nice DevX if you want to display the state of an app that does something to data, without writing the necessary plumbing to pipe that data to a browser and render it.

[0] https://github.com/NimbleMarkets/ntcharts/blob/main/examples...

flomo 5 hours ago | parent | next [-]

The low-level terminal stuff is still grody as hell. Years ago, HN had some blogposts from someone who was rethinking the whole stack, but I dunno what happened to that project. If people really like TUIs, eventually they're going to stop doing the 1980s throback stuff.

wonger_ 4 hours ago | parent | next [-]

This series? https://arcan-fe.com/2025/01/27/sunsetting-cursed-terminal-e...

crazyloglad 3 hours ago | parent | prev [-]

It's still around. Still doing its thing. One developer drafted a backend to ratatui for it, but he's been silent lately. I'm only marginally interested in that angle as its endgame "just" lands in TurboVision but Rust! and having to stay compatible with the feature-set of terminal emulation defeats the point.

eschaton 6 hours ago | parent | prev [-]

They did this in the 1970s and 1980s too, then they were called “forms libraries” but were often full application frameworks in ways that would be familiar to modern developers of native graphical apps.

webnrrd2k 6 hours ago | parent | prev | next [-]

I think that a lot of people here at HN have had bad web interfaces and GUIs inflicted on them for a long time, that a TUI is a welcome change and a big improvement. TUIs are limited, which make it hard to create great interfaces; but those limits also make it hard to create really bad interfaces. Also the TUI is genuinely good at simple-to-moderate complexity software. For an example, try out Midnight Commander.

alwillis 5 hours ago | parent | prev | next [-]

> I've seen lots of TUIs lately, why is that? What is the renewed interest?

A few reasons:

- for the most part TUI apps are cross-platform: macOS, Linux, BSD, Windows

- they cut down on context switching. If you're already in the terminal, you shouldn't have to switch to a GUI app to check on something.

- Today's terminal emulators—Ghostty, WezTerm, Kitty, iTerm, Alacrity, etc.—are fast and capable with GPU acceleration, 24-bit color support running on high resolution displays. It makes for a compelling platform to code for.

- Anecdotally lots of developers are spending less time in IDEs and more time in the terminal using Claude Code, Gemini CLI, Codex, etc.

travisgriggs 5 hours ago | parent | prev | next [-]

> What is the renewed interest?

For me, often, it’s an escape for a GUI world taken over by out-of-control “design” tenets. I value good Ux design concerns, but often working with designers lately feels bureaucratic, at times cargo culting, and overly spacious.

It’s like a graphical form of “I didn’t have time to give you a short answer, so I gave you a long one instead”. TUIs force a paucity that often makes for a nice information/pixels ratio.

J_Shelby_J 2 hours ago | parent | prev | next [-]

Idk, I see it them all the time on the rust subreddit. Like, cool, but my friend, I have like ten brain cells and all of them are in overdrive. I’m not going to remember I have your TUI app installed AND remember the commands to make it work. If I have to use a CLI I just save the command I need in a text file so I don’t have to look them up. Just give me ang button any where. I’m not picky.

lynndotpy 6 hours ago | parent | prev | next [-]

In addition to other comments, it's the only real way to make a usable GUI-like experience over SSH.

vostok 6 hours ago | parent | next [-]

I've generally had good experiences with the various compressed X11-like tools. One example is x2go, but there are a few.

fragmede 6 hours ago | parent [-]

oh man, I haven't thought about xpra in a while! Xpra was a layer of indirection between X clients and X server so you could ssh in, run eg firefox, disconnect, and then reconnect and pick up Firefox where you left it.

MangoToupe 6 hours ago | parent | prev [-]

You can also serve a window server over ssh

mendelmaleh 3 hours ago | parent | prev | next [-]

The main reason for me is simple keyboard navigation. I don't want to click through links and menus, I don't want to use the mouse at all. I think that's also why tiling window managers are popular again.

serial_dev 3 hours ago | parent | prev | next [-]

My theory, web apps are extremely bloated and slow, teams behind it always “optimize” and switch things up, and desktop apps are usually just wrapped web apps. TUI developers don’t mind settling and not always messing up the product and they keep the TUI “lean and mean”. Some users appreciate fast, simple UIs and they don’t want to be constantly A/B tested on only for the core experience to break all the time.

Szpadel 5 hours ago | parent | prev | next [-]

i think this might be caused by codex. it's open source, many people use it and it uses ratatui. People check how it is implemented and discover ratatui.

I believe this might be current most popular application using this library.

I'm surprised it isn't included in this showcase

mock-possum 3 hours ago | parent [-]

Or Claude. There are more than a few developers on my team that prefer terminal interface for their codegen chatbots.

pixelready an hour ago | parent | prev | next [-]

Yeah I think it’s the software equivalent of “go back to the land” type movements. Resurgence of Linux tiling window managers, NeoVim, TUIs. Everything in web and Electron land feels busy, attention grabbing, and bloated. Heck, even VSCode’s defaults are a kind of cluttered.

I for one love the tranquility of a dark mode terminal and find it quite pleasant with a nice nerd font, a pretty color scheme, a single high resolution monitor and an ergonomic keyboard. I feel much more connected to the code or data I’m interacting with in that space. Trying to live there as much as I can lately. JiraTui has been great for preventing context switching at work.

CSSer 6 hours ago | parent | prev | next [-]

That's a big question. I think TUIs are great for glue processes, and it doesn't hurt when they look pretty. They're also excellent first projects with composable interfaces. Shell code is such a pain. It's quick and dirty, but there are a lot of footguns. The main challenge is reducing the friction of making a TUI to the point where it's easy to execute an idea, and a lot of frameworks do this really well. Add the proliferation of LLMs on top, and maybe that could explain it?

tptacek 6 hours ago | parent | prev | next [-]

High-level languages that compile to single binaries, and very good TUI frameworks (maybe inspired by Python Textual?) for them.

DC-3 6 hours ago | parent | prev | next [-]

The terminal remains an extremely compelling computing environment in spite of its limitations and fifty years of technical debt. As anachronistic as arcane escape codes and box drawing characters seem in $CURRENT_YEAR, the fact remains that nothing has arisen to fill its niche.

orbital-decay 6 hours ago | parent | prev | next [-]

They're easier to program and seamlessly integrate into the terminal. That's basically it, other than that they're worse than normal GUIs. Also, GUI frameworks aren't that mature in Rust in particular.

positron26 5 hours ago | parent | prev | next [-]

Unrelated to the article, a lot of my millennials could see web and then mobile coming, focused on web & mobile, and as a result just weren't really participating in C and C++ development. We used terminal applications leftover from peak GNU.

When Rust came along and presented a career opportunity, terminal apps was a great way to get into it and filled a gap in a lot of people's skill sets. Even when building GUI apps in Rust, your first entry point is a CLI usually.

We took our UX thinking from web & mobile and remixed it with Rust and new ideas came out. Turns out "If it aint broke don't fix it" for two decades can build up a lot of evolutionary pressure.

morkalork 6 hours ago | parent | prev | next [-]

IMO it's like seeing kids bust out disposable kodak cameras at the bar: generational nostalgia

baq 4 hours ago | parent | next [-]

TUIs being designed by engineers for engineers make them rather timeless. Extra points for being keyboard-first: lots of modern GUI tools don’t even consider the keyboard for anything other than text input, to the point that even tab order is broken, if it works at all, or the escape key closes multiple stacked modal windows, or enter doesn’t submit the dialog, or…

backscratches 4 hours ago | parent | prev [-]

TUIs work better than GUIs. So much more powerful with so many less resources.

nurettin 6 hours ago | parent | prev [-]

I don't care much about forms and windows in the command line (I've had enough of turbo vision back in the 90s), but I don't think I am alone in wanting to see some progress bars and stats for long running processes. So 2% of these libraries is actually pretty useful.