What’s New for Developers and System Administrators

GNOME 3.38 includes many new features and improvements for those working with GNOME technologies. Read on for more details!


Boxes is GNOME’s application for managing virtual machines and remote desktop connections. When creating a new virtual machine, Boxes now allows users to manually select the operating system if it fails to detect it automatically, rather than falling back to the default “Unknown” virtual machine profile. This improves support for operating systems that are incompatible with the default profile.

Boxes now allows editing a virtual machine’s libvirt XML, enabling you to change advanced settings that are not available in the user interface.


GNOME OS is a virtual machine image designed to facilitate development and testing of GNOME. It is not intended to replace traditional Linux distributions. Try out GNOME OS for yourself. Due to recent changes in Boxes’s support for UEFI, you must use Boxes 3.38 to run GNOME OS images; older versions of Boxes will not work.


libhandy is a library providing high-quality GTK widgets with a focus on adaptive and mobile-friendly user interfaces. GNOME 3.38 includes libhandy 1.0, which brings many new widgets, such as HdyDeck and HdyWindow. The libhandy 1.0 release is parallel-installable with the earlier libhandy 0.0 API series.


Tracker has a new website and greatly improved documentation. With version 3.0, tracker has moved from a centralized to distributed database model. App developers are encouraged to store data in app-local Tracker databases.

The file system indexed managed by Tracker Miner FS is now read-only.

Tracker’s SPARQL core now fully supports SPARQL 1.1 query language, including the SERVICE {} statement, which allows one database to query from another.

The tracker3 commandline tool has also seen many improvements.


GJS has been updated to use Spidermonkey version 78. This brings a number of new language features, such as the ?? operator (“nullish coalescing operator”) and the ?. operator (“optional chaining operator”), public static class fields, support for separators in numeric literals (like 1_000_000), a more powerful regular expression engine with lookbehind and named capture groups, and useful methods such as String.replaceAll() and Intl.RelativeTimeFormat.formatToParts().

Other Improvements

Other improvements in GNOME 3.38 include:

  • The Rust support in GNOME Builder is now using rust-analyzer instead of rls.

  • Support for tracing with sysprof has been integrated in GLib, libsoup, and pango.

  • Glade now supports GJS widgets, automatic loading of composition templates, and improved deprecation checks using version data from introspection.