GTK and Rust works really well on Linux, which I suppose is the pertinent part given the focus of the article. I've yet to work out how to get GTK and Rust to work on macOS or Windows, which makes cross-platform UI difficult.
I built a new GTK 4 backend specifically for macOS so we have native support for rendering all of the UI with OpenGL like we do on Linux and Windows. I'm fairly quick to fix bugs if I get good reports, and it can be installed with `brew install gtk4`.
You can also build GTK for macOS easily with meson as it has subprojects for everything. In fact, our CI does it from scratch on every commit w/ macOS. On Windows you can just open GTK with visual studio and build it by using Meson to generate the project files.
A bunch of work is about to land to make the macOS backend more solid/faster too similar to the work Firefox did in the last couple of years to reduce power usage w/ OpenGL/IOSurface/etc.
Thanks. I'll take a look. I've tried Relm 3, Relm 4, and gtk-rs, but they all use Linux only in their CI. I just can't work out what to install and what env vars I need. I didn't the official GTK docs all that helpful on the topic. I'm keen to see how to package the whole thing up, too. Ideally, I could just put the necessary libraries in a directory with the executable.
Oh, nifty. I tried getting it going with msys2 and didn't have good luck. I think something might be conflicting. I haven't gotten to the point of wiping the machine yet. Maybe I'll have better luck with meson.
gtk-rs has a book[1] which has setup information for windows. The install was easy on windows following the instructions. I have yet to build an app with GTK4 so I can't comment on the writing and building of apps just yet.
I followed those as well but changed to whats in the gtk-rs book
A word of warning: before you start, if you choose to go down the MSVC path, you have to uinstall msys2 and remove msys from your environment paths. If the Meson build find msys2 in your environment path variable, it will try to build using msys2.