── If you're making a TUI application, for the love of god use notcurses ──
/tech/ thread 1781112919 posts: 3
DIR ← back to /tech/
DIR [reply to this thread]
>> 1 Anonymous Techie 2026-06-10 17:35 ID:rjFml42c
I don't think anyone but fat vim-using greybeards can bear writing stuff in plain old ncurses, but what's the alternative? Well, I'm here to tell you what is not the alternative: FTXUI. One of the shittier libraries I ever had the displeasure of using. Oh, it's well-made, it's intuitive, it Just Werks, but it's fucking slow as shit, it's pointlessly restrictive, and worst of all, it turns your TUI program into yet another goddamn WEB APP.
Their Github page proudly declares "Inspired by 1 and React" at the top of the "features" list, and by god they are not lying. It basically a massive clunky rube-goldberg machine designed to meticulously recreate the entirety of the turd pile which is the modern "web-development stack" inside your terminal. Comes complete with multiple layers of unnecessary abstraction, starting from the thing it's actually supposed to do (generate outputs that different terminal [emulators] can render as interfaces), to recreating HTML/CSS/DOM and then adding a huge and complicated callback-based le functional programming Update-o-Tron 3000 on top. For what is ostensibly a C++ library.
The real cherry on top? Its actual documentation is all 90% example-based.
For the past month I've been trying to make a text adventure engine using it, and almost every step of the way I found myself struggling against the library and all its dumb assumptions. I found myself breaking it apart and constantly falling back onto the lower layers just to recreate functionality that's supposed to come out of the box. What finally broke me is just trying to create a scrollable sub-window. For all the fancy shit they've stuffed into that monstrosity, something as simple as a little panel showing text that you can use your arrow keys to navigate is just too much to ask.
2 days ago I started playing around with notcurses and holy shit, that is what I was actually looking for. Just a clean, simple API that does all the heavy lifting of terminfo bullshit to give you a blank field of cells you can fill with different colored characters. Then you call ncpp::render() whenever you're ready, and bam, here's the stupid box you drew using 10 lines of CS101 code.
If I'm going to be recreating basic widgets (A SCROLLABLE WINDOW!!) from scratch, I might as well do it using a library that actually respects me as a programmer. I started migrating my code and in just one afternoon I managed to recreate basically 80% of the most vital functionality with maybe 10% of the faff.
>> 2 Anonymous Techie 2026-06-11 02:57 ID:ipDBzBsn
I appreciated the phrase "fat vim-using greybeards".
>> 3 Anonymous Techie 2026-06-13 19:36 ID:j6cPofoF
As an average-human weight MicroEMACS user, i hardcode everything as VT220 escape sequences.
DIR [reply to this thread]
DIR ← back to /tech/
HTML Open this thread on the web