System76 has been developing their own COSMIC desktop as the next evolution for their Pop!_OS Linux distribution built atop an Ubuntu base. Interestingly with this big COSMIC desktop undertaking, which is being written in the Rust programming language, they have decided to shift away from using the GTK toolkit to instead make use of Iced-Rs as a Rust-native, multi-platform graphical toolkit.
This makes more sense than some might think. One of the engineers over at System76 is also the creator and lead developer of Redox OS, and GTK itself has become more and more insularly focused on GNOME than any of the other GTK-based desktop environments on Linux, BSD, and similar platforms. This is a big bet for what is essentially still a small company, but it sure does show some gusto.
My major concerns would be consistency, both visually and behaviourally, since the vast majority of popular applications on Linux are either GTK or at least somewhat trying to integrate with GTK, so there’s a lot of work to do to make everything feels are least somewhat coherent. Still, I’m definitely curious to see what this will look like, what it will feel like, and how it will perform.
On the plus side, Qt was designed for this sort of thing, so they could write a counterpart to
QGnomePlatform
. That’s the layer of Qt that sits above backends like Win32 vs. Cocoa vs. X11 vs. Wayland vs. … and handles delegating to things like the Windows widget theming infrastructure.Aside from all the KDE apps, that’d also get them things like the Qt backend to LibreOffice, LyX, VirtualBox, SMPlayer, PCManFM-Qt, Featherpad, etc. plumbed into their look and feel.
In the KDE 4.x/GTK 2.x era, they actually had a
QGtkStyle
widget style which delegated to GTK perfectly enough that I’d run a KDE desktop with a GTK theme to ensure perfect consistency.Iced is a great choice for a GUI library. It’s massively thread-pooled and uses the WGPU crate as a wrapper for Vulkan, DirectX 12, Metal and has an OpenGL fallback called GLow. It takes Rust up to its limits.
Lack of support for RTL written languages in Iced is problematic. e.g.:
https://github.com/iced-rs/iced/issues/250
Wish it was factored into Toolkit choice decisions.