As I see it Nim has mostly maintained a neutral position concerning GUIs; that is not favoring or rejecting options. I dont know if it is wise but at least its neutral which is kinda wise ;-)
Quite some GUI-options have been developed, but when uptake stagnates, developers sometimes throttle back on development understandably ..
Some (older) links:
https://github.com/nim-lang/Nim/wiki/Curated-Packages
https://matthiashager.com/gui-options-for-nim/
Elcritch has been active with Figuro lately:
I'm using godot to develop a mobile/desktop app for my business, and I'm using nim to do the heavy lifting. godot has a "low processor mode" config that reduces cpu and gpu usage, making it possible to develop apps using the game engine.
I'm not saying it's the best way, but it's worth a try. There are many good reasons to use it though:
This project is amazing btw gdext-nim.
I'm using godot to develop a mobile/desktop app for my business
That's awesome btw. Good outside-of-the-box thinking, congrats! :-)
I'm really not the "design guy," so don't expect anything amazing. Here is an album with some screenshots and gifs of the desktop version.
But if you are looking for real-world examples, there are some I can mention:
I agree that cross platform GUI is already here and it's seaqt.
Rationale: Native looking cross platform successful open source apps e.g. Transmission seem to use QT a lot. seaqt is special because it doesn't limit you to a particular workflow on the nim side, you just import it and use it.
Regarding seaqt, there's also a companion DSL being worked on here: https://github.com/arnetheduck/nora-poc/blob/master/src/nimside.nim, with usage seen here: https://github.com/arnetheduck/nora-poc/blob/master/src/nora.nim#L154 which allows working more smoothly with QML, slots and signals - nimside is about to become its own library and a balance will be struck between seaqt ("mostly code generated from the C++ headers") and nimside ("mostly convenience stuff to make it feel like native nim").
That said, using seaqt in its raw form is already a solid option, and sometimes the better option vs DSLs.
If by cross-platform you mean a GUI library written in Nim that runs natively on every platform, that is quite difficult, and there are only a very limited number of good examples of this in the software world (Qt, wxWidgets, etc.).
If your goal is a single GUI library written in Nim that runs on every platform but is not native (which I think is a much more realistic goal), then first we would need a cross-platform windowing, input, and GPU API layer written in Nim—something like SDL, GLFW, or SFML.
I’ve only seen a single repository on GitHub working in this direction, which is this one: https://github.com/treeform/windy However, it has been in development for quite a long time.
If we assume that such a library could run on desktop, web, and mobile platforms, it would open up an entirely new dimension for Nim. Not only GUI libraries, but even game engines could be built on top of it. I would really love to see such a project take off—if only I had the knowledge, time, and experience to contribute to its development.
I think these are worth mentioning
https://github.com/levovix0/sigui
My native language is Spanish, so my expression may not be very clear. I’m new to Nim and I don’t know as much as those with more experience, but I don’t know if this might help you: https://github.com/stoneface86/nappgui-nim
https://nappgui.com/en/home/web/home.html
It’s just that you would need to work on it to make desktop applications; I don’t know if that’s possible.