What's New for Developers
GNOME 51 includes GTK 4.23 and Libadwaita 1.10.
For complete documentation, visit the GNOME Developer website.
GTK
GTK 4.23 builds on the native SVG work from GTK 4.22 and adds rendering, input, and platform improvements.
Native SVG Rendering
The new GtkSvgWidget renders SVG directly in your application, with support for interactive elements such as <a> links and <view>. The gtk_svg_set_stylesheet() API allows stylesheets to be applied to SVG inline <style> elements.
Fractional Scale Rendering
Snapping support allows GTK to align content to device pixel boundaries for improved rendering quality on fractional HiDPI scales.
GtkSvg is now used to render all SVG icons. Symbolic icon recoloring issues have been fixed. GTK's GtkSpinner widget now uses animated SVG.
The SVG renderer now supports the feTurbulance filter effect, dominant-baseline and baseline-shift for text, text-decoration, proper whitespace handling, media queries in CSS, and 3D transforms.
Graphics and Frame Delivery
The GSK renderer supports 10-bit image formats, uses a rewritten cache allocator, and uses clip masks to reduce offscreen passes. Frame clock improvements continue. GTK respects the system reduced-motion preference in GtkSpinner, GtkStack, and GtkRevealer.
Platform & Protocol Support
-
Wayland Text Input 3.2
Support for Wayland text input protocol version 3.2. -
Session Management
Session saving implemented using thexdg-session-management-v1protocol. -
Android SDK 36
Android backend ported to SDK 36. Frame timing aligned to vsync using Choreographer. -
Vulkan Preference
Addedgdk_display_get_prefer_vulkan()andgdk_display_set_prefer_vulkan().
Input Improvements
Type-to-search reworked to use a "push" approach. New gtk_editable_set_input_interceptor() API for intercepting input. gtk_event_controller_key_forward() is deprecated.
New GtkShortcutTrigger helper functions handle synonymous keys, such as keypad variants. GtkActivateTrigger added. Long-pressing on GtkEntry opens the touch menu.
Lists, Models, and CSS
Size allocation issues in GtkList, GtkGrid, and GtkColumnView fixed. GtkEnumList provides a list model backed by a GType enumeration for populating dropdowns.
GTK now supports the font-width property for specifying intermediate widths as percentages. font-stretch remains as shorthand. Requires Pango 1.58.
Libadwaita
Libadwaita 1.10 introduces new API for declarative styling, updates sidebar widgets, and adds Android build support.
CSS Class Binding
AdwCssClassBinding adds CSS classes to widgets when a GObject property holds a given value.
Sidebar Updates
AdwSidebar and AdwViewSwitcherSidebar added :prefix and :suffix properties for adding widgets before and after sidebar contents.
API Updates
AdwEnumListModel has been deprecated, with libadwaita now using the GtkEnumList from GTK 4.23 in its place.
Widget Enhancements
-
AdwAboutDialog
New:other-apps-titleproperty for customizing the "Other Apps" section header. -
AdwShortcutLabel
Uses more natural modifier ordering and shows improved key labels on macOS. -
AdwSpinnerPaintable
Now supports the icon weight. -
AdwOverlaySplitView
Adds a unique style class to the overlay sidebar. -
AdwStyleManager
Gained an Android settings backend. -
AdwClampScrollable
Now implementsGtkScrollable.get_border().
The adaptive preview in the demo now contains window styles and collapses the sidebar on small sizes.
Libadwaita 1.10 requires GTK 4.23.1, depends on ministream instead of appstream, and can be built on Android.