Posted on Leave a comment

GNOME Settings 47 Retrospective

While cutting the 47.2 release earlier today, I couldn’t help but reflect on everything we’ve accomplished this cycle. But instead of just listing code changes, I want to use this opportunity to give credit where it’s due, because to me, software is about people!

Much of what we have achieved this cycle is thanks to the dedication of passionate volunteer contributors such as Matthijs Velsink, Automeris Naranja, Hari Rana, Alice Mikhaylenko, Andy Holmes, Adrian Vovk, Corey Berla, Joan Torres, Joshua, Adrien Plazas, Jamie Murphy, and many others. I’m also deeply grateful to the translation teams for making GNOME accessible in so many different languages.

The GNOME Design team has been invaluable throughout this cycle. A big thank you to Allan Day, Jakub Steiner, Sam Hewitt, and Jamie Gravendeel, for their essential contributions.

Special thanks to Matthijs Velsink for taking on the challenging role of co-maintaining Settings with me. I couldn’t manage it without Matthijs’ outstanding contributions to fixes, features, and reviews. We’re lucky to have him as part of the project.

Release 47 holds extra significance for me. Wearing my downstream hat, I can share (it’s no secret) that the upcoming RHEL 10 Workstation will primarily feature GNOME 47 components. Building a solid upstream foundation for this version has been one of my top priorities, and I’m happy with the results.

Thanks to the evolution of libadwaita, we’ve been able to port many of our custom widgets to modern libadwaita ones. This transition enhances consistency across the desktop, improves accessibility, and ensures better responsiveness on screens of various sizes. A big shoutout to the incredible folks working on libadwaita for making this possible!

With Libadwaita we added Accent Color settings, allowing customizing our default blue accent color throughout the GNOME app ecosystem. Personally, I’ve been rocking the purple accent color on my desktop. 🙂

We also revisited the interface for adding local and enterprise user accounts, improving it with libadwaita widgets, a new password and username feedback widget, and addressing some technical debt along the way. Speaking of interface modernization, we’ve also revamped several UIs in the Printing settings.

Over time, some of our UIs have evolved at different paces, often leaving us with interfaces in transitional states and UX inconsistencies. A common example was nested dialogs, where a button within a dialog could open yet another dialog. To address this, many top-level dialogs have been converted into subpages using libadwaita’s AdwNavigationView, resulting in a smoother browsing experience.

We continually refine the settings texts and descriptions to align more closely with the GNOME Human Interface Guidelines. Many settings have also been reworded to improve clarity and discoverability too.

There’s so much more that happened this cycle, including a lot of performance improvements, bug fixes, and various tweaks. You can find more changes listed on the ‘Version History’ dialog in GNOME Software.

We’re always looking for contributors, and there are many ways you can help improve GNOME Settings. Visit apps.gnome.org/Settings to learn how to get started.

Posted on Leave a comment

#2 Another update on GNOME Settings

For the past months since my last update our project has been thriving with active contributors and positive interactions in our issue tracker and chat channels. As we land changes we often forget to talk about them, so this blog post is a small summary of the visual changes we have landed lately in Settings (in no particular order).

None of these changes are final and are subject to modifications before the stable GNOME 46 release. In addition to the items listed here, we have landed numerous bug fixes, tweaks, and non-visual changes. While the descriptions are brief, you can click on the links for more information and context.

New “System” panel, a Google Summer of Code project

Gotam Gorabh worked on this project during the summer of 2023. This panel groups “Region & Language”, “Date & Time”, “Remote Desktop”, “About” and will contain more system-level settings in the future.

Merged the “Removable Media” and “Default Apps” panels into the “Apps” panel

We have been working towards reducing the number of panels and grouping settings when that makes sense. Removable Media and Default Apps settings are similar to what we expose in the “Apps” panel and this makes related things easier to find.

An About dialog

After some discussions we decided to land the About dialog as it is not visually distracting where it is, and it gives us an opportunity to thank the volunteers involved in developing, translating,  documenting, designing the project.

Performance improvements in the Appearance panel

This panel has had some long lasting issues with its startup speed and lag when resizing. @velsinki has done great work identifying the issues and proposing changes that improve things significantly.

Lots of updated tooltips, mnemonics, HIG compliance UI changes

There are contributors doing drive-by merge-requests where they fix some missing tooltip, add a useful mnemonic, fix some sentence capitalization, etc… every detail matters. I appreciate this!

Multiple dialogs ported from deprecated GtkDialog to newer API

Most Settings panels spawn dialogs for specific settings, and a lot of those historically were using GtkDialog APIs that got deprecated. Various ports to newer APIs have landed lately.

Use of modern libadwaita AdwSpinRow, AdwEntryRow, etc…

The same way our dialogs are getting ported to new API, there are multiple instances of custom widgets that get easily replaced by modern libadwaita widgets. The result is often a much better polished widget and less code to maintain. Win-win.

Add “disable while typing” touchpad option

Updated Wacom illustration style

Improved status pages

Improvements in the “Saved Wifi-Networks” dialog

Notifications: don’t list system services

Other than that, there are other interesting merge-requests in the review queue and individuals working in features and bugfixes for the upcoming 46 release.

Posted on

An update on GNOME Settings

There’s no question that GNOME Settings is important to the overall GNOME experience and I feel flattered to share the responsibility of being one of its maintainers. I have been involved with Settings for almost a decade now but only in the last few months I have  started to wear the general maintainer hat “officially”.

That’s why I am compelled to update our community on the current state of the project. Settings is also co-maintained by Robert Ancell who has been doing great work with reviews and also helping us improve our code readability/quality.

The last general update from Settings you might have heard of was Georges’ Maintainership of GNOME Settings Discourse post. Some of what’s written there still holds true: Settings is one of the largest modules in GNOME, and being this hub connecting the Shell, the settings daemons, network manager, portals, cups, etc… it needs more maintainers. It needs especially maintainers with domain expertise. We have a handful of active contributors doing great frontend/UI work,  but we lack active contributors with expertise in the deep dungeons of networking or color management, for example.

To tackle this issue, one of my goals is to improve the developer experience in GNOME Settings to attract new contributors and to enable drive-by contributors to post changes without struggling much with the process. For that, I kickstarted our Developer documentation. It is in an early stage now and welcoming contributions.

I also have been invested in fixing some of our historical UI consistency problems. A lot has been done in the gnome-44 and gnome-45 cycles to adopt the latest design patterns from the GNOME Human Interface Guidelines with libadwaita and modern GTK. Alice Mikhaylenko and Christopher Davis did an outstanding job with the ports to modern Adwaita navigation widgets. We also gained a new “About” panel that can condense more information that is useful especially for debugging/supporting issues. There’s still work to be done on this front especially with certain views that are currently looking a bit out of place in comparison to modern views.

Screenshot of the new "About" panel.

The new Privacy hub is a new “hub” panel introduced by Marco Melorio in gnome-45 that is our initial step towards reducing the overall number of panels.Screenshot of the new "Privacy" panel.For GNOME 46 we want to introduce a new “System” hub panel, developed by our Google Summer of Code intern Gotam Gorabh, as well as introduce a new “Network & Internet” panel that is being already worked on by contributor Inam Ul Haq. These are two epics that involve reworking some complicated panels such as the Wifi/Network and User Accounts ones. These are panels that should also see a big frontend rework in the gnome-46 cycle and that I plan to work on myself.

Also a big thank you to Allan Day, Jakub Steiner, Tobias Bernard, Sam Hewitt, and other folks doing outstanding design and UX work for Settings.

GNOME 45.0 (stable) will be released in September, shipping plenty of new stuff and bugfixes. It would be extremely helpful if you could test the latest changes and report issues and regressions in our issue tracker. GNOME Settings 45.rc has been released and should be available soon in GNOME OS and unstable/development distro releases such as Fedora Rawhide.

If you want to get involved, feel free to join our Matrix chat channel and ask questions there. I also monitor the “settings” Discourse tag, where you can ask support questions and suggest features.

Posted on

Settings: new Search panel

I haven’t been working on GNOME Settings for quite some time now. Currently, I am focusing mostly on GNOME Boxes, Usage, and Fedora Silverblue. To be fair I still have some love for Settings and I enjoy context-switching once in a while to hack on code bases which I don’t face daily. Unfortunately I can’t do this more often.

A few years ago I pushed a WIP version of the Settings “Search” panel that never got merged because we were in a moment of transition in the project and at the time we thought that introducing Drag & Drop capabilities to GtkListBox would make sense still in gtk3. Fast forward, we are far from even starting to port Settings to gtk4, but people got to use the panels! For this reason, I rebased and iterated a bit over the Search panel in order to make it identical to the mockups. The final result is previewed below and will be available in our next stable release, 3.34.

P.S.: I haven’t blogged much in the last couple of years mostly because I always felt that blog posts required a certain amount of *amazingness*. Now I’m convinced that small pills, highlighting something as small as the work above, have a place in this blog (better than not blogging at all). 🙂