Already posted here (https://github.com/nim-lang/needed-libraries/issues/132), but trying the forum as well for more visibility. I've been wanting to make a tui app for some time, planned on using nimwave, but on closer look I was surprised to see that there's basically no widgets implemented in it, and you have to do things more or less by hand (I need a table, drop down, text input, and more).
Rust has ratatui, go has bubbletea and a ton of others, same with python, and it seems nim has no high level tui building framework. Also nimwave doesn't seem to be used in any projects except the author's one. I saw nimbox (termbox wrapper), which maybe might suffice, but I am having trouble installing it for archlinux, and termbox2 seems to be the one to use now, which is not wrapped. There's also nim-notcurses, but notcurses only has some basic widgets. Ncurses does have widgets but they're in a separate library which is not wrapped.
Because of this I am contemplating learning another language for this project, go or rust. Since it would seem easier than writing your own TUI framework in nim. I found these two very nice projects written in C++: https://github.com/ArthurSonzogni/FTXUI https://github.com/gdt050579/AppCUI Does anyone have the ability to make a nim wrapper for any of them ?
It seems to me that this is quite an essential library to have, big negative point for this lack. Interesting that there's so many gui libraries attempts, yet nothing serious for tui.
I was under the impression that termbox/2 has some simple widgets, like a scrollable table, seeing https://github.com/dom96/deauther made with it. But it seems it draws everything manually, and for that I could use the already existing nim lib illwill. So I can scratch the temrboxes from the list of candidates, my project idea is a bit too complex to be drawing everything by hand. And also counter productive to reinvent the wheel, as a principle.
So I'd like to know if some c++ people can maybe wrap one of those projects mentioned above, or maybe we should find a good candidate to be ported to nim, from a similar language that doesn't make heavy use of classes ? Like rust or go.
I can't speak to whether you should go with ratatui or bubbletea -- they both look pretty great. I don't have the bandwidth to make an extensive widget library for nimwave right now, but if you choose to go that route, I'm happy to do some code review or answer questions.
The main selling point of nimwave is the web and opengl support. If you don't care about that, the rest of it is a thin abstraction on top of illwill -- basically just enough added structure to allow making reusable components.
I do want to respond to one thing though...
And also counter productive to reinvent the wheel, as a principle.
Please do reinvent the wheel. That's how you grow as a programmer. The world is full of people spending their days gluing libraries together, building on endless layers of abstractions. It's surprisingly easy to build something that fits your needs better than off-the-shelf solutions, and it turns out it's way more fun, too.
Don't be discouraged by those who deride this as "not-invented-here syndrome". This is still a young field full of people who can't agree on anything. Nobody has really figured out the principles of software design. We haven't figured anything out, and we'll need to do a lot more wheel-reinventing before we do.