Budgie 10.7.2 Released

Budgie 10.7.2 is the second minor release in the 10.7 series of our Budgie Desktop environment, primarily focused on bug fixes, additional compatibility with GNOME 44 stack, and various quality-of-life improvements.
Budgie 10.7.2 Released
Joshua Strobl
Joshua Strobl
April 26, 2023
Budgie 10.7.2 is the second minor release in the 10.7 series of our Budgie Desktop environment, primarily focused on bug fixes, additional compatibility with GNOME 44 stack, and various quality-of-life improvements.

GNOME 44 Support

While Budgie 10.7.1 introduced initial support for GNOME 44 through our Mutter 12 ABI support, Budgie 10.7.2 expands on it with additional changes centered around three key areas:
  1. Workarounds for functionality broken as a result of changes upstream in Mutter with regards to X11 support.
  2. Updates to support changes in tooling we use for out-of-process dialogs / prompts, primarily via zenity.
  3. Backporting of functionality from our work-in-progress 10.8 that resolves some crashes seen as a result of changes in Vala.
In the first area, we have updated our screenshot area selector to be now explicitly call for no decorations, to prevent the selection overlay from showing decorators, resulting in a non-fullscreen overlay. In the second area, upstream zenity was rewritten to use GTK4 and libadwaita. In the process of this change the command-line flags were changed (with some removals), resulting in some dialogs no longer appearing, such as those to handle confirmation of display changes when applied in Budgie Control Center. We now support both the "old" zenity (pre-3.90) and new (3.90+), and compile-time we will now bake in the appropriate options. In the third area, we noticed a spike in reported segfaults / abrts in Budgie Desktop recently related to functionality in our AppIndexer. This functionality was used to calculate the Levenshtein Distance of your search queries in our Budgie Menu and Budgie Run Dialog. In normal human language, we had implemented a common string metric that was used to determine the difference between what you are searching and various metadata, such as the name, of an application. This difference was used as part of the scoring of the app based on your query and helped to sort them in a manner that was most relevant, such as making sure "fir" actually scored "firefox" better than something like "ferdium". This was implemented using a matrix of numbers. Changes in the generated C in a newer version of Vala resulted in it being improperly freed, causing segfaults when opening and searching in either Budgie Menu or Budgie Run Dialog. Yikes. Fortunately, we already had a change for Budgie 10.8 that changed us from using Levenstein Distance to Fuzzy Bitap, resulting in better matches with the neat side-effect of no longer having bad C generated by Vala causing crashes! So instead of going down the rabbit hole even further to see where it went, we just decided to bring you that improvement early!

Optimizations around Notifications

Budgie 10.7.2 introduces optimizations around Notifications in Raven. Due to known scalability problems in GtkListBox and Co in GTK3, Raven could begin to feel sluggish or less responsive when a large amount of notifications had been accrued in its Notifications view. This was typically seen around the 800 notifications mark. To address this sluggishness, we have implement a global cap on the amount of notifications in Raven, with older notifications in each Notification Group being gradually culled as you hit the cap and more notifications come in. This global cap is set to 500 and is divided equally among all the Notification Groups (per app). So if you just had Discord firing away but nothing else, it would start culling Discord notifications once you hit that 500 mark. Once you add another group to it, it'd halve to 250, 3 to 166ish, 4 to 125, and so on. As you remove Notification Groups or clean up notifications, the caps automatically balance out. This should help to address long-term sluggishness typically seen on high uptime systems or those where the end user may not have as strongly implemented their own filters for disabling specific application notifications. We have also optimized notification destruction to tackle growing memory consumption.

Other Fixes & Improvements

Alongside the improvements / fixes above, we have backported the following for 10.7.x:
  • Fix Gtk gdk_x11_window_get_frame_extents, tackling some scaling issues with popovers.
  • Ensure Budgie Menu application lists height allocation accounts for GTK scaling factor. This ensures all parts of Budgie Menu are visible when used on resolutions such as 1080p with 200% scaling, rather than parts of it being cut off.
  • Use correct C header for meta_keybindings_set_custom_handler. This is necessary to avoid a build failure with future compilers which do not accept implicit function declarations by default.
  • budgie-menu: Change the selection policy from NONE to SINGLE. When set to NONE, keyboard navigation works, but there is no visual indicator. Changing it to SINGLE allows themes to show a visual indication that an item is selected, and that the arrow keys on the keyboard changes the selection.
  • budgie-menu: Make category buttons keyboard navigable

Contributor List

Budgie Desktop is developed by Buddies of Budgie, with contributors around the world. Here is a list of all the code contributors that made this release possible:

Supporting The Project

Did you know that you can financially support the Buddies of Budgie project? Buddies of Budgie was founded to provide a home for Budgie Desktop and your financial contribution can go a long way to supporting our goals for development, providing opportunities for financial compensation, leveraging no-compromise Continuous Integration and Continuous Delivery systems for streamlining Budgie 10 and 11 development, and more