It took a long time, and massive amounts of energy and sweat and blood, but as of last week, Settings is finally ported to GTK4 and uses libadwaita for platform integration.
This was by far the biggest application I’ve ported to GTK4. In total, around 330 files needed to be either rewritten or at least modified as part of the porting process. It also required GTK4 ports of some dependencies, like gnome-desktop, libnma, and colord-gtk.
The Users, Cellular, and Online Accounts panels aren’t ported yet. They have dependencies that needs porting, and we agreed on porting them afterwards. Some of these ports are tricky, such as the Online Accounts panel which requires a GTK4 version of WebKit2GTK – which depends on libsoup3, and that conflicts with librest’s dependency on libsoup2, so all of a sudden we have a bunch of intertwined dependencies to take care of. Another dependency that needs porting is GCR, but seems like it’s not going to be as complicated as Online Accounts.
By using libadwaita, we will finally be able to standardize rows and preferences groups across different panels. There are contributors working on it already, and updates will be shared in no time, stay tuned!
All in all, I’m pretty satisfied with this port. Settings is one of the largest GNOME applications, so having it ported before GNOME 42 was a small miracle. There are bugs to fix, issues to uncover, and regressions to iron out, but so far it’s been working well enough for mundane operations, and I expect it to mature enough until the release.
As always, contributions fixing these regressions will be warmly welcomed.