Live data from Hacker News

Ratatui – App Showcase

ratatui.rs

211–220 of 238 posts

Re: Ratatui – App Showcase

#211

Earlier quoted context omitted.

I have used egui in actual projects. It is slow, opinionated in a bad way, not very customizable in terms of themes, and definitely not up to date in terms of latest GUI standards. It isn’t even the best RUST GUI project by any of those metrics.

Interesting! I am using it in some complex stuff with 3D graphics (A structural biology/molecular dynamics tool), and it is a great experience. I need to compare it to GPGUI and Slint; would love to compare the pros and cons first-hand. I love how Slint works on embedded devices too.

As I said above, they all suck in some way. It's a matter of deciding what is most important to you and picking the one that sucks least for that.

Egui is easy to get started with, and has a lot of widgets that work out of the box. The performance story isn't great, layout options is terrible (largely due to being immediate mode), and it is not very customizable. You take what they give you, and you like it.

Iced is a phenomenal and well-thought out API that is a wonder to work with. When it does what you need, which it often doesn't because it's not nearly as complete as the alternatives. But if you know that a monad is a monoid in the category of endofunctors, Iced might be right for you.

Slint is like Qt, but Rust. I don't think I need to say any more - if you have used Qt before, that sentence either immediately sold you on it, or convinced you to never go near it.

GPUI is a wonderful, extremely fast, stable, perfect API. If you are making a cross-platform native text editor. If you are doing anything else, sorry :(

There are a slew of projects bridging rust to run packaged browser apps which have some sort of DSL for specifying HTML front ends. People seem to like this for some reason. Some people also like being chained up in leather and whipped. I sometimes wonder if these are the same people.

Ratatui really is the best of the bunch. It has layout, accessibility, nice and easy user interface. It's a wonder to work with. Only problem: it is a TUI, not a GUI.

Re: Ratatui – App Showcase

#212
post #209
post #175

Earlier quoted context omitted.

Text isn't more legible without structure, and without communicating structure, which is what various accessibility toolkits do, you don't get this supposed benefit

Text has inherent structure that GUIs don't. The ceiling for GUIs is higher (thanks to standards and supporting frameworks), but the floor for TUIs is higher.

Ok, what is the inherent structure of these two columns and how is a screen reader supposed to divine that structure without the framework telling it that there are 2 headers with the following text? And imagine the layout is space-separated as in cli utils

C| Column Wide |

o| |

l||

1|2|

Re: Ratatui – App Showcase

#213
post #172

Earlier quoted context omitted.

they do not, GUI is more capable of handling keyboards than TUI because terminals still have pretty dumb limitations where some modifiers aren't even visible/bindable!

This seems trivially false or disconnected from the important part of what I'm referring to here. TUIs have to be navigable by keyboard. They could be garbage in every other way, but at least they have that. GUIs might have keybindings as polish if the developers put in the effort. Otherwise they either don't have keybindings, or they rely on generalized keybindings that come with the OS/UI toolkit that can be bad/im…

This seems trivially false to you because you don't rise above the trivial, but also forget about similar trivial fails in TUIs.

> They could be garbage in every other way, but at least they have that

Not really, they could also not implement keyboard input for some interactions and only react to mouse. You could have a click-to-open-url in your terminal without a keyboard fallback setup. Of course, you could set it up, but that would be "polish if you put in the effort" There is no limit to garbage.

> Also once your workflow is increasingly keyboard based (like when using a tiled window manager),

Exactly, for example, you've set your Windows key to be reponsible for all window-based movements, so you have it move/resize app windows and want to have the same key help you move/resize "inner windows/panes/columns" in a TUI app. Well, tough luck, the terminal doesn't even recognize this modifier!

Again, "as polish if you put in the effort" you can achieve anything via some external remapping to supported keys, but "otherwise" you don't have keybindings, and don't even have generalized fallback common (though not universal, again, there is no limit to garbage) to GUIs.

Or you'd be unable to bind some key combo because in a terminal that key combo is equivalent to regular typing and you need to timeout to differentiate between the two, so a permanent friction.

> tab is swallowed by an input so you can't even tab past a component

Of course you can, use your keyboard to move the mouse pointer and click outside of the input field. All pure organic keyboard-based interaction! "They could be garbage", but at lest you have that keyboard-based option (yes, only "polish/put in effort")

Re: Ratatui – App Showcase

#214
post #172

Earlier quoted context omitted.

they do not, GUI is more capable of handling keyboards than TUI because terminals still have pretty dumb limitations where some modifiers aren't even visible/bindable!

IMO, the value in TUIs lie in 1) Composability: we've got really good tools for manipulating terminal windows like tmux, :term in vim, etc, whereas the same can't really be said for OS-level windows and 2) As a shibboleth: They implicitly state that they're built by and for keyboard-centric technical users, and thus the wants and needs of keyboard-centric technical users are going to be the valued over the wants and…

1. if you use some external window manager tool, what workflow does tmux/term provide you that OS-level windows with that tool do not?

2. specifically for "keyboard-centric tech users" that's a big fail since the terminal platform is not capable of supporting advanced keybindings presisely because all they do is "target the lowest common denominator" (as defined in 1965) of keybinding support!!! So your cool setup from a GUI code editor is simply not transferrable.

3. this is very rare, I mean, just look at the screenshots, a lot of them couldn't even add non-gapped borders=== ---!

Re: Ratatui – App Showcase

#215
post #72

Earlier quoted context omitted.

But.. why? Like I do get the occasional need where it's easier to just see an html page in the terminal, but why would you render to a low-resolution 2D buffer with random character-hacks with a huge amount of overhead, over having a real buffer and just writing pixels to it, with actual hardware acceleration?

> but why would you render to a low-resolution 2D buffer with random character-hacks Have you used a terminal in the last 5 years? We got graphics and everything now[0] > huge amount of overhead A... terminal... with... large overhead? Surely you're joking. Have you met any gui app? Microsoft word takes a few gigs. Have you seen electron apps like Spotify or slack? My fucking mail client takes over half a gig and neo…

Wouldn't you still be as sluggish as the GUIs you mention since it's HTML5? Is the benefit from only rendering a subset or something? I'm struggling understanding how rendering a page into a terminal is faster than just rendering to a regular window. It just seems like another layer between the browser and the GPU.

Re: Ratatui – App Showcase

#216

I'm really waiting for the TUI web browser. That would let me live completely in the terminal. Is anyone working on this? With the speed terminals are and support for graphics through things like sixel and shaders I'd love to have a browser even if I couldn't do videos. Even if it was like viewing most pages in reader mode. I'm not sure some big companies would be happy about that though since it likely would mean yo…

Carbonyl looked promising but unfortunately is not maintained anymore: https://github.com/fathyb/carbonyl

Re: Ratatui – App Showcase

#217
post #44

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

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

Good idea. Fixing this in https://github.com/ratatui/ratatui-website/pull/979 Disclaimer, I work on Codex since about a month ago.

I used codex to write the VHS script, which runs codex to generate a Ratatui app, and then then used codex to add this to the website. It's codapodes all the way down.

Re: Ratatui – App Showcase

#218
post #132
post #129

Earlier quoted context omitted.

What are you talking about, a screen reader out to be way more capable in a TUI or CLI than the massive pain of ANDI or 508 compliance.

TUIs still need to comply with 508 so that “massive pain” is there either way. What’s actually hard with screen readers isn’t getting text (that’s been easy on most GUI systems for decades) but communicating things in the right order, removing the need to see spatial relationships or color to understand what’s going on. TUIs make that harder for everything beyond mid-20th century-style prompt / response interfaces be…

You physically can't do any of this in a TUI.

There's no protocol that tells a screen reader to say something different than is actually displayed on the screen. The best you can do is having a whitelist of screen reader process names and changing how your TUI works if one of them is detected, but that's brittle and doesn't work over SSH. You'd also have to think about how to do container escaping and interfacing with the host system when you're running in WSL, as the screen reader is almost certainly on the host side.

Re: Ratatui – App Showcase

#219
post #213

Earlier quoted context omitted.

This seems trivially false or disconnected from the important part of what I'm referring to here. TUIs have to be navigable by keyboard. They could be garbage in every other way, but at least they have that. GUIs might have keybindings as polish if the developers put in the effort. Otherwise they either don't have keybindings, or they rely on generalized keybindings that come with the OS/UI toolkit that can be bad/im…

This seems trivially false to you because you don't rise above the trivial, but also forget about similar trivial fails in TUIs. > They could be garbage in every other way, but at least they have that Not really, they could also not implement keyboard input for some interactions and only react to mouse. You could have a click-to-open-url in your terminal without a keyboard fallback setup. Of course, you could set it…

I've used some pretty bad ncurses apps that barely have keybindings, like oterm.

I'd probably put them in a third, discarded, mutant category where they are mouse-first applications that run in the terminal. Thus like GUIs, keyboard-support is bolted on.

So a better distinction here is mouse-first vs keyboard-first, but I think "TUI vs GUI" is close enough to that and it kinda stands in for that distinction in most cases.

Vim, tmux, and weechat would be examples of keyboard-first TUIs where mouse support is bolted on as polish, but never required.

Where you lose me is that every example you can think of where a bad TUI might not perfectly mesh into a keyboard-only workflow, the GUI counterparts to that example is much worse. So we would just agree that it's a bad TUI rather than anyone going "you're right, the average GUI is much better if keyboard-driven control is my priority".

I don't understand some of your examples though. Your super key is always at a global level that you wouldn't expect apps to read, that's the point. And using timeouts to handle keybinding collisions or something? Dunno what that looks like nor why you would do it. The examples are like if I said GUIs suck because it's a dreadful experience if you insist on using your mouse upside down.

Re: Ratatui – App Showcase

#220

People keep asking why TUIs in Rust and the answer is because the GUI situation in Rust is dreadful: https://www.boringcactus.com/2025/04/13/2025-survey-of-rust-... Rust is simply not meant for GUI-based data design but I still want Qt in Rust. That's it. Not QML or Slint. No markup at all. None of the immediate mode things. No other languages. Definitely not GTK. I'm worried it will never happen for Rust and it will…

Cosmic DE is written in Rust, it's nice and is a good proof you can do GUI in Rust quite well
Post reply on HN