What's new for developers, system administrators and distributors

GNOME 3.10 introduces a number of new features and enhancements for those working with GNOME technologies.


With GNOME 3.10, it is possible to run a GNOME session as well as GNOME applications using Wayland. This support is experimental and is intended for testing purposes only. gnome-shell or applications running on Wayland may be unstable and could crash.

To run gnome-shell under Wayland, execute the following command in a terminal:

gnome-session --session=gnome-wayland

It is also possible to run individual applications on Wayland by specifying the GDK_BACKEND. Run the following command, substituting application-name for the name of the application's executable:

GDK_BACKEND=wayland application-name

If an application fails to run on Wayland, it will try to fall back to X11.

Further details about GNOME on Wayland can be found on the GNOME Wayland wiki page.

New GTK+ Widgets

GTK+ 3.10 introduces a collection of new interface widgets. These provide additional abilities, such as adding animated transitions, as well as greater flexibility. In some cases they provide easy-to-use alternatives to existing widgets. The new widgets have been created in line with the latest GNOME 3 application designs.

  • GtkStack: a container which shows one child at a time. Transitions between pages can be animated as slides or fades.

  • GtkStackSwitcher: a set of linked buttons that can be used to control which page is displayed in a stack. Designed to be used in conjunction with GtkStack.

  • GtkRevealer: a container which animates the transition of its child from invisible to visible.

  • GtkListBox: a vertical container. Rows can be dynamically sorted and filtered, and navigation is possible using pointer or keyboard. GtkListBox provides an alternative to GtkTreeView. Rows can contain controls and complex layouts.

  • GtkHeaderBar: a horizontal container that should be placed at the top of a window. GtkHeaderBars play the role of both window titlebar and a toolbar. Content within a HeaderBar can be placed at the start or end, or it can be centered.

  • GtkSearchBar: a container which is designed to contain search controls. GtkSearchBars are generally located below a GtkHeaderBar, and can be hidden and revealed on demand.

Composite Widget Templates

Composite widget templates are a new feature in GTK+ 3.10. The new feature allows composite widgets to be defined using XML, which avoids the need to construct them manually. GTK+ is already taking advantage of this feature to define its own composite widgets, such as GtkVolumeButton and GtkFileChooserDefault. Application authors can use the same capability to make their own, which can be done by directly with XML or with the Glade interface builder.

Tristan Van Berkom has written a detailed blog post about this new feature, which includes a tutorial and a working example that you can try.

Baseline Alignment in GTK+

GTK+ 3.10 introduces baseline alignment for text. This allows text labels to be properly vertically aligned in relation to containers, which has the added advantage of ensuring consistent text alignment.

Base line alignment is available for a range of common widgets. Developers wanting to use it are required to set the vertical alignment for the text widget to GTK_ALIGNMENT_BASELINE (this is done automatically when using helper functions such as new_from_label()).


GApplication has gained a number of new features for GNOME 3.10:

  • Support for the org.freedesktop.Application interface (which was specified at the freedesktop.org summit in April 2013) has been added. This provides a standard way to start an application. It also allows a file to be opened with an application or a named action to be activated. More information can be found in the Freedesktop Specification.

  • .desktop files can now specify if an application should be started via D-Bus activation. Details on how to do this can be found on the wiki.

  • Support for actions in .desktop files has been added to GDesktopAppInfo, using g_desktop_app_info_list_actions() and g_desktop_app_info_launch_action(). The Freedesktop Specification also has details on this.

  • GApplication now allows applications to signal their busy state to a desktop shell, such as for a long-running operation or loading state.

GLib has a number of other enhancements in 3.10:

  • Tests can now generate TAP output, which allows easier integration with other test harnesses. To run your tests in this mode, specify --tap on the command line.

  • There is now some support for installed tests.

  • GPropertyAction is a new type of GAction that represents a property of an object, and allows the value to change when activated. This makes it very easy to integrate properties into GMenus.


The new geolocation abilities in GNOME 3.10 allow applications to access information on places and to identify the current location of the system. To do this, two new components have been introduced:

  • geocode-glib: a new library for (reverse) geocoding. This allows you to find information on places according to search terms or coordinates. It relies on the Nominatim service from OpenStreetMap.

  • GeoClue2: a re-written GeoClue implementation designed for simplicity and privacy. This allows you to identify the current location.