Is FLTK the best GUI toolkit for NestopiaUE?
Well, it is not an issue, but just curious to know why FLTK and not other thing. What do you think about using Xlib, Xforms or Xaw for this emulator? I think it will be more lightweight.
There are really no good choices for a GUI toolkit, so I picked the one that was the least bad all around. Qt was another option, but Qt means more of a maintenance burden. Using the raw X11 options wasn't considered because I wanted this to be portable to other windowing systems. I still have dreams of having a single cross platform build, but the reality is I have way less free time than I used to... Who knows though. The win32 port is really starting to show its age, and when I look at Nestopia JG, it almost has feature parity with the win32 port, but no GUI. I suppose using that as the basis for a Qt build might be the best future for this project as a consistent cross platform application, but it comes down to free time. For now and the foreseeable future, it's FLTK.
I'll leave this open to collect any ideas other people might have.
Well, win32 is the best for making GUI in my opinion, but it's Windoze only and proprietary. Qt is huge and ultra bloated, and advances too fast with versions, so future breaks, which make you to invest more time in pointless maintaining. I hate when third-parties break my stuff. If you want something cross-platform, IUP could be an option, but looks like it's just like a some wrapper for target operating system and not as GUI toolkit. IUP is fine and reliable for static linking if wanted. You just program GUI once in IUP, and it uses automatically GTK3 if on GNU/Linux, win32 if on Windows, Cocoa if OSX... So write once in IUP, and release. But GTK is far from lightweight. I am not an expert, but yeah, here is no damn good or perfect toolkit. I always believe in use native things, win32 is the best for Windows, and GNU/Linux is a frankenstein OS, so x11/xorg, Xaw, Xlib is the most native thing it has.
I did look at IUP briefly, but it struck me as a bit risky to rely on. I do like the concept though. Maybe I'll port some C-based emulator to it one day and see how I like it.
I did look at IUP briefly, but it struck me as a bit risky to rely on. I do like the concept though. Maybe I'll port some C-based emulator to it one day and see how I like it.
It is risky. But this software (IUP) is well maintained, everything compiles, even with static linking. But again, it's not perfect, but could be suitable for fast cross-platform GUI development.
Perhaps this is not the best place to ask a question, but I don't think it's necessary to create a new issue. Is FLTK compatible with Wayland? I can't run Nestopia in full screen mode - the window expands, but the title and panel remain. I tried running FLTK_BACKEND=wayland nestopia but that didn't help.
The last time I checked, FLTK was working on proper Wayland support in the dev branch. I had previously tested on Wayland using XWayland and everything worked as expected. I'll take another look this weekend if I have time. @DM-VLK what Wayland compositor are you using? And also, what distro are you using? I've seen some differences in FLTK's behaviour between distros before.
I've seen some differences in FLTK's behaviour between distros before.
Thank you for reply. I use Nestopia 1.52, EndeavourOS (Arch Linux fork) and Mutter (GNOME 43.2).
Now tried on a real PC - everything works fine, but i remember that i was testing it on a virtual machine and have this issue. Now i can reproduce it - when i set virtual machine to f/s (1920x1080) fullscreen in Nestopia works, but when i switch virtual machine to windowed mode with 1916x936 resolution fullscreen looks like this:

Just to answer the original question, after having this much time to think about it, I have to say that yes, FLTK is the best toolkit for this emulator. I've looked at every toolkit option, even the less popular ones nobody has heard of, and no matter what criteria I use, I always just arrive back at FLTK being the best overall. What it doesn't have going for it is looks, but maybe that can change if I learn to skin it with SVG.