13 ms·
Ratatui – App Showcase
- dkdcio 11mo agothe title of this post is odd? it’s a showcase of TUI applications built with this Rust crate — which I am hearing about for the first time, and am interested in. I was expecting a blog post on why Rust is experiencing a TUI revolution or something
- wrs 11mo agoI think they're saying this crate is why Rust is experiencing a TUI revolution. Charm would probably say the same for Go.
- qudat 11mo agoCharm was my introduction into the world of ssh apps which prompted me to create https://pico.sh https://pico.sh SSH apps serve a similar UX to web apps which I just think is a great idea for many use cases. Needing to install a cli tool just to upload some files is tedious when you can just use rsync, sftp, piping, or even sshfs
- kstrauser 11mo agoWhat’s an SSH app vs a terminal app?
- moooo99 11mo agoA terminal app is running during an interactive shell session. A ssh app basically allows you to SSH into the app, without ever ending up in the shell. A fun example of this is https://www.terminal.shop/ https://www.terminal.shop/
- hnlmorg 11mo agoAny terminal app can be an “ssh app”. There isn’t really a distinction.
- dkdcio 11mo agoI am also now curious about alternatives/what differentiates this crate
- airstrike 11mo agoratatui has been around for quite a bit. it's what I'll reach out for if I need semi-complex TUIs in Rust fwiw
- tomhow 11mo agoWe've updated the title. Submitters, please remember this from the guidelines: ... please use the original title, unless it is misleading or linkbait; don't editorialize.
- omarvanez 11mo agoI'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 https://github.com/rothgar/awesome-tuis [1] https://terminaltrove.com/ https://terminaltrove.com/ [2] https://github.com/ratatui-org/awesome-ratatui https://github.com/ratatui-org/awesome-ratatui
- morkalork 11mo agoIMO it's like seeing kids bust out disposable kodak cameras at the bar: generational nostalgia
- baq 11mo agoTUIs 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 11mo agoTUIs work better than GUIs. So much more powerful with so many less resources.
- zimpenfish 11mo agoBack in the olden times (2009) I was working for a company trying to sell advertising devices (screens on buses) with a fancy* HTML interface for setting up/controlling/reporting etc. to Titan. Except all the Titan operators hated it because their old system - an old TUI - was about a million times faster for them to use (not just because they were used to it but it didn't require a mouse, etc.) than the fancy* HTML (which was, to be fair, bloody awful but not my fault.)
- 11mo ago
- CSSer 11mo agoSome of the most interesting projects here have the worst installation stories.It's sort of tilting at windmills to not acknowledge that people are going to mostly install through package managers for their platform by advertising it as such. I'm not suggesting there's anything wrong with building from source. On the contrary, I think it's fantastic as many targets are supported here as there are! I think it's a shame more people aren't discovering them is all.
- AceJohnny2 11mo agoRust, following Go's footsteps, has made it very easy to distribute-and-compile from source. They've taken all the pain out of the compiling-from-source pipeline, through "go build" or "cargo build" Meanwhile, distributions sometimes maintain their plodding rate at package updates (usually handled by distribution volunteers, not the original program's developers), which was developed in an era when building from source was a tedious process where the distribution volunteers provided value. In effect, build-from-source has taken over "just use the distribution package".
- CSSer 11mo agoOkay, but where do you put it? I mean, yes, I know there's /usr/local/bin and /opt/bin, but why do I have to compile then mv it myself? It's a small paper cut. Does cargo or go have a global build command? That would be a nice all-in-one. And why should I have to download the source code if, honestly, I don't care as long as it works? Nah, I don't think build from source has taken over at all. It's 2025 and I use a package manager (or three) on every major operating system across multiple languages. It's because, as a vendor experience, I can one-line and use just about anything.
- dwattttt 11mo agoIf you have the Rust toolchain installed, installing is as simple as e.g.: cargo install ripgrep which will result in ripgrep being downloaded, compiled, and copied to a per user directory that's included on PATH as part of the toolchain. EDIT: Which is what I'm doing right now for a few of these that caught my eye.
- nullbyte808 11mo agoVery dope. I really like dua as my mac only has 256 GB.
- siavosh 11mo agoWhat is the best / most popular / user friendly terminal http client I can replace postman with. Has a history I can search, save favorites, secure etc.
- retired_account 11mo agoMost popular? https://justuse.org/curl/ https://justuse.org/curl/
- seabrookmx 11mo agoI also have this question! I starred Posting[1] but haven't yet got around to trying it. [1]: https://news.ycombinator.com/item?id=40926211 https://news.ycombinator.com/item?id=40926211 Edit: here's another one: https://github.com/LucasPickering/slumber https://github.com/LucasPickering/slumber
- bitexploder 11mo agoI like smaller more focused tools on the terminal. You can make these all work together pretty reasonably with a little glue. Hurl, mitmproxy, httpie with http-prompt. I tend to prefer mitmproxy sessions and massaging that with Python/curl as needed for repeating and tweaking. User friendly is relative, but these tools work well. Python for tweaking http streams in mitmproxy is powerful and rather friendly for what you get in return. Mitmproxy lets you easily save flows with a bit of Puthon glue to output httpie commands giving history, and you can save mitmproxy sessions.
- tcoff91 11mo agoKulala nvim plugin or emacs rest client
- esafak 11mo agoxh has sessions. https://github.com/ducaale/xh https://github.com/ducaale/xh
- esseph 11mo agohttps://posting.sh/ https://posting.sh/
- MangoToupe 11mo ago[flagged]
- rireads 11mo agoWhy do you think there is not a sweetspot between cli and gui?
- MangoToupe 11mo agoIt's called emacs
- ModernMech 11mo agoRatatui is neat but the way it's architected, you need to take on third party dependencies for each individual widget. And we're talking basic things like spinners, checkboxes, text areas, etc. -- there aren't too many widgets built into ratatui itself. I didn't like the idea of taking all that on so instead I went with something more handrolled.
- speed_spread 11mo agoThat's pretty much how I would expect a UI framework to work. As long as each widget class only depends on the UI base classes the dependencies should be small and grow proportionally to the number of widgets types used by the app. This should also being much less version churn than a big central library including everything.
- ModernMech 11mo agoThat's a good point! Some sort of widget framework is important for extensions. But I think my issue is that there are only a dozen included widgets, so very basic things are left to third parties. Most mature UI libraries would include all the basic things, and leave a widget interface for uncommon extensions, not rely on third parties for basic features. With the path they've chosen, it may mean less version churn, but the other side is you've gotta wait for each widget author to upgrade their widgets when Ratatui upgrades. This can lead to a situation where some widgets upgrade, some don't, and you're left either on the lower version with unpatched issues, or the newer version missing widgets. I much prefer the design of web-sys and js-sys, where all the features are included and gated behind feature flags.
- joshka 11mo ago>This can lead to a situation where some widgets upgrade, some don't, and you're left either on the lower version with unpatched issues, or the newer version missing widgets. We're fixing that in Ratatui 0.30 by introducing a stable core crate.
- bbkane 11mo ago
- mbm 11mo agoRatatui is awesome! Just built a little chat client with it, tons of fun. https://terma.mattmay.dev/ https://terma.mattmay.dev/
- godelski 11mo agoI'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 you could do things like ad blocking more easily. But maybe you could get them on board if you pitched it as a browser for LLMs. Something something it's a native interface for them. ;) I know there's some browsers but things like W3M, Lynx, or *links* are... rough... definitely not of the quality we're seeing elsewhere in the current TUI revolution.
- fruitworks 11mo agothe cursive tui library does some html rendering https://sr.ht/~ireas/cursive-markup-rs/ https://sr.ht/~ireas/cursive-markup-rs/ the whole cursive library strikes me as very html-like in layout
- awesomeusername 11mo agoBrowsh [0] - it runs firefox headless, and renders everything to ascii in the terminal It's glorious [0] https://www.brow.sh/ https://www.brow.sh/
- be_erik 11mo agoI use this one pretty often. It’s great. https://chawan.net/ https://chawan.net/
- godelski 11mo agoThis actually looks pretty reasonable. Thanks! I'll definitely be giving it a try
- moderation 11mo agoChawan is great. Very customizable. Regular updates. Fast. The chaman utility replacing man is also good
- RustSupremacist 11mo agoPeople 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-gui-libraries.html 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 be such a missed opportunity.
- goku12 11mo agoYou basically preempted nearly every single option, including an incumbent one. I don't believe it's fair to judge Rust based on its compatibility with Qt alone - something written in C++. Nothing against C++, but it's harder to get C++ and Rust to work together. You haven't addressed Iced yet, though going by your requirements, you're unlikely to be satisfied by it as well. Iced is not there yet, but it is the native GUI toolkit of the Cosmic desktop.
- dancemethis 11mo agoI kept forgetting Narrator is a Windows program, and the post read like the author was referring to the "Narrator voice in their head" while testing the UIs. It made the post more amusing, actually. I sighed when I saw "Windows Narrator" suddenly.
- ogoffart 11mo agoAuthor of one of these "markup"-based toolkits here. I believe that Rust might not be the best language syntax to express UI. I am curious why you are so strongly against using a DSL. This topic comes up often, so I wrote a blog post explaining why I think a DSL is a good fit: https://slint.dev/blog/domain-specific-language-vs-imperative-for-ui https://slint.dev/blog/domain-specific-language-vs-imperativ...
- OtomotO 11mo agoI'd like to have non-imperative gui code in Rust. Why Rust? Because I like its power and with recent developments such as subsecond the compile times are absolutely negligible.
- renewiltord 11mo agoOh good collection. This is good. Found lots of good tools here.
- discoinverno 11mo agoShameless plug of my TUI game, also built with Ratatui https://github.com/ricott1/rebels-in-the-sky https://github.com/ricott1/rebels-in-the-sky
- benrutter 11mo ago> P2P terminal game about spacepirates playing basketball across the galaxy Absolutely fantastic description right there.
- seabass 11mo agoLooks really cool! Love the artwork. Right now the video in the readme doesn’t render on github, though. I had to manually download the mp4 from your demo folder to view it.
- gausswho 11mo agoI don't know what I just got into, but I love it. Reminds me of Hattrick (the decades old soccer management sim) but with more elbow grease and panache. If you're even remotely interested, just ssh in and you're off to the races. BTW, the video at the top of the repo readme won't open on any device I own.
- discoinverno 11mo agoJa, I know, it's a coin flip, sometimes it works :( I added a youtube link just below it, it's the demo
- nhatcher 11mo ago(shameless plug) I don't know if anyone would be interested in taking this but I have what I think is a really nice project. Integrating this; https://github.com/ironcalc/TironCalc https://github.com/ironcalc/TironCalc Into the main repo : https://github.com/ironcalc/ironcalc https://github.com/ironcalc/ironcalc Now, I'm not 100% convinced ratatui is the way to go after seeing what the folks of Microsoft did with edit. Anyhow, I think TironCalc is a great open source project to work with Rust and Ratatui.
- jossephus01 11mo agoNice. It would be also cool if they add 'cargo install %tool%' commands for each one.
- vablings 11mo agoThis is basically how dioxus 0.7.0 works. You can download components, and they will automatically add the source to your source and then you can just freely use them https://dioxuslabs.com/components/ https://dioxuslabs.com/components/
- submeta 11mo agoWow, I did not know that some of my most loved apps in terminal are written in Rust: yazi, atuin, bottom, isn't fzf also written in Rust? And today I learned about some more I want to explore: csvlens, bandwhich, dua, material, oha. I find these apps so increadibly useful, I almost want to learn Rust :D
- timeon 11mo agofzf is Go. There is Skim, which is done in Rust.
- eric-burel 11mo agoWould be more and more useful to have terminal CLI utilities like running a given prompt or agent over a folder. I'd use that for auditing legal compliance for some projects.
- whycombinetor 11mo agoDon't all the major coding agents have CLI mode now? Cline CLI. Opencode CLI. Codex CLI. Gemini CLI. Claude Code CLI. Etc.
- pjmlp 11mo agoSo many MS-DOS application memories comming back, really don't get it in the age of cheap graphics. Need to dust off my Turbo Vision and Clipper projects.
- nobleach 11mo agoCA Clipper database stuff was my jam! I only wish I had gotten into Turbo Vision. I used to watch my users fly through db apps filling out forms, hititng TAB between fields. There was just something so natural about it. The first app we ported to a web-based solution was really painful to watch.
- palata 11mo agoI tried Ratatui for a small app. I just needed a textbox, and I copied an example from the tutorial. When typing (quickly), the CPU usage was crazy. I was expecting something like 0% CPU (it's just typing text, a similar app in Go uses nothing) but it was using like 8% CPU. I would guess I was doing something wrong, but it was really running an example from the official website. So I gave up on Ratatui.
- nhatcher 11mo agoHmm, that sounds bad. Were you running the debug build? Like just running 'cargo run'?
- palata 11mo agoFirst in debug, then I built in release to see if that changed something, but it didn't. I see that there are some related discussions on the github: https://github.com/ratatui/ratatui/discussions/1927 https://github.com/ratatui/ratatui/discussions/1927. Not sure if there is a solution though.
- nhatcher 11mo agoThanks! I will definitely have a look at this. I really want to like Ratatui but I do wonder how much bloat there is
- nhatcher 11mo agoRelated from yesterday: Bluetui – A TUI for managing Bluetooth on Linux https://news.ycombinator.com/item?id=45817114 https://news.ycombinator.com/item?id=45817114 https://github.com/pythops/bluetui https://github.com/pythops/bluetui
- vinhnx 11mo agoI’ve been experimenting with a coding agent project [0], and ratatui-rs became my framework of choice for building its first TUI. [1] The framework now ships with native list view support and improved terminal capabilities, including smoother mouse interaction and text selection. [0] https://github.com/vinhnx/vtcode https://github.com/vinhnx/vtcode [1] https://github.com/ratatui/awesome-ratatui https://github.com/ratatui/awesome-ratatui
- thomasfl 11mo agoI want a small wrapper around slumber so it can take the same command line arguments and options as curl. I now there are several attempts at making a graphical UI for curl, but slumber has a very nice and simple cli.
- diab0lic 11mo agoHow is the Windows support in Ratatui? I recently developed something with a different library (also crossterm based) only to discover it did not work very well for my windows users and ended up having to build a GUI with Iced. There’s a very real chance I just missed some initialization code that Ratatui might do out of the box that the other library was not. Edit: Issues experienced by windows users were no colors, terminal flashing on every keypress, all keypresses registered as double. Edit2: This miniature rant inspired me to go back to the commit and submit a patch to eliminate the event reporting on KeyUp and enable terminal colors.
- the_gipsy 11mo agoShameless plug: https://github.com/benjajaja/mdfried/ https://github.com/benjajaja/mdfried/ Markdown is really cool in the sense that you can still look at the raw text and read it easily. But one thing that always made me load up .md files in the browser was that it's just much easier to read when the headers are bigger. So I wrote a markdown viewer that renders the headers as images. You need to configure your font once for it to work, can't really detect the terminal font. It obviously also renders inline images, which was another reason to use the browser. And then, Kitty developed the novelty https://sw.kovidgoyal.net/kitty/text-sizing-protocol https://sw.kovidgoyal.net/kitty/text-sizing-protocol (I think it's now also implemented in Ghostty), which means we can skip the text-to-image processing and directly leverage that protocol.
- unmotivated-hmn 11mo agoThis is very cool, thanks for sharing! p.s. I don't think Ghostty implements this protocol (yet?)
- the_gipsy 11mo agoYou're right, I think I misheard that on some YouTube video. There's a discussion on the ghostty repo, and someone said presenterm had something though. The good thing is that the image renderer definitely works on ghostty!
- Derpdiherp 11mo agoI began learning Rust in my spare time - as a C++ dev it seemed like the right thing to do. I ended up using Ratatui for a hangman implementation. I really liked using it, I ended up with an itch to make an oldschool roguelike with it. Perhaps some day I'll carry on and do it.
- swiftcoder 11mo agoThere are some truly gorgeous TUIs in that list
- Thom2503 11mo agoThe dutch teletekst has a SSH interface, which is also made with ratatui [1]. ssh teletekst.nl [1] https://tweakers.net/geek/237754/nos-maakt-teletekst-beschikbaar-via-ssh.html?showReaction=21289806#r_21289806 https://tweakers.net/geek/237754/nos-maakt-teletekst-beschik...
- whycombinetor 11mo agoI recently asked grok-code-fast-1 to read the SST OpenTUI readme and docs (gave it the github link), and to write an implementation plan for an OpenTUI usage mode for my Rust CLI stdin/stdout app. It fetched the readme. Fetched a couple more doc pages. Response begins "Sure, here's the plan: I'll write a TUI using the Rust package Ratatui..."
- alfiedotwtf 11mo agoRatatui is awesome, but I haven’t found a widget library and event loop that I like, so had to roll my own. Any recommendations for something that’s ergonomic to use and looks nice?
- deleted 11mo ago[deleted]