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:
1 - If you are referring to the size, it's really large, ~90mb. Just for comparison, a hello world app using flutter has ~5mb. You can reduce the bundle size a lot if that's necessary. Spoiler from the link, from 90mb to 21mb uncompressed, and 6mb with upx.
2 - Yes, it is possible. The only limitation I found so far is that you can't create editor plugins, and as a consequence, if you want to register an autoload nim node, you will need a gdscript editor plugin.
3 - Yes, it's a retained mode, but it has no relation to the config. The config itself only changes the refresh rate of the screen and the main loop tick.
A little more context about the "low processor mode" config: if you open any website and use the dev tools to track the refresh rate of the page, you will see that the page is only redrawn when something changes (visual change), like an animation playing, a hover state with different css, or a video at 60 fps (which will force the refresh rate to be 60 fps). This config allows godot to only redraw when necessary, saving gpu and energy. If you have mobile users, you probably don't want to drain their batteries. Another change is a sleep in the main loop to save cpu.