Re:Rust and C++ Interoperability
by zarzavat on Monday November 14, 2022 @04:13AM
(#33591733)
What people want from a UI library is to be able to use system components. For example, there should be a way to open the system color picker, to display a system data grid, system date picker, etc. It doesn’t need to be more than that.
[ Parent
| on HN ]
There are definitely people who want more than that. Some controls I am always looking for in a UI library before I even think about using it is a more advanced list control (or table view) which supports columns, sorting etc., and a "tree view". Of course, as the GP wrote, it's hard to implement these without getting more opinionated. Plus, I might add, it's also hard to do these while staying "mobile-friendly".
These blessed "system components" do not exist any more. Windows has two or three different ways of doing widgets and so does MacOS while the Unix land never had one.
You can still use the old ones, but they will look old and may not behave like you would expect (hidpi displays, touch screen, etc).
wxWidgets and its bindings to many languages exists if that is what you want.
Writing an uniform interface to GUI widgets on many platforms is very much a non-trivial undertaking, there are plenty of failed attempts over the years.
The look & feel of system components on Windows has actively regressed starting from Win 8 and subsequent releases. No idea about the situation on Mac OS. But AIUI, both Qt and GTK+ will give you a good enough UI in practice. Perhaps someone will even split out the SerenityOS widgets (which are truly best-in-class, meshing the advantages of "classic" and "modern" UX) as a multi-platform framework, much like has been done wrt. the browser engine.
> AIUI, both Qt and GTK+ will give you a good enough UI in practice
Not GTK+, it sticks out like a sore thumb. Qt gets much closer, though in both cases you can tell something feels off.
(e.g., click an active tab in a tab control in Qt and you won't see the dotted selection line like you would in Win32. That normally indicates you can switch between tabs on the keyboard.)
SerenityOS is such an amazing project. "Oh, this thing would take a large team several years to build? Let's build it anyway!" The backstory behind the project is extremely admirable, too.
> Perhaps someone will even split out the SerenityOS widgets as a multi-platform framework
That would look out of place on MacOS or Windows. Serenity has a Win 2000 look.
MacOS still has standard components at least. For Windows you can pick the best of several options and stick with that.
For what it's worth, wxWidgets does have hidpi support (at least on Windows).