GTK 4.24 Snaps to Device Pixels for Fractional Scaling, and Respects Reduced Motion

GTK 4.24 Snaps to Device Pixels for Fractional Scaling, and Respects Reduced Motion

GTK 4.24 shipped ahead of GNOME 51, and the changes worth knowing are mostly about rendering correctly rather than rendering new things.

Fractional scaling that snaps to pixels

GTK 4.24 improves fractional scaling by snapping content to device pixel boundaries.

This is the fix for one of the longest-running irritations on high-DPI Linux. At a scale factor like 125% or 150%, a logical coordinate does not land on a physical pixel. Something has to decide what happens to the fraction, and the usual answer is filtering, which is why fractionally scaled desktops have produced slightly soft text and blurry one-pixel borders for years.

Snapping to device pixel boundaries means the renderer picks a real pixel rather than smearing across two. Text edges and thin lines get crisp. It is not a complete solution to fractional scaling, which remains genuinely hard, and it addresses the most visible symptom.

Reduced motion is now respected

GTK 4.24 honours the reduced motion setting in more places, avoiding animations when it is enabled.

This is an accessibility feature with a real medical basis. Motion and parallax effects trigger nausea, dizziness and migraine in people with vestibular disorders, and for others they are simply sensory overload. A system-wide preference is only useful if toolkits obey it, and “in various places” is an honest description of incremental progress rather than a claim of completeness.

The frame clock rework

The GDK frame clock has been reworked for precision, with the goal of presenting frames on time and reducing dropped frames.

Frame timing is the difference between a desktop that feels smooth and one that feels slightly wrong in a way users struggle to describe. Presenting a frame at the wrong moment is not a dropped frame, but it produces visible stutter because the interval between what you see is uneven.

GTK4 on Android now aligns frame timing with vsync as part of the same work.

Also in 4.24

  • Wayland ext-background-effect protocol, enabling blurred backgrounds behind windows, which is what terminal transparency with blur needs
  • Wayland text input v3.2 protocol support, which matters for input methods and therefore for anyone typing a language that needs one
  • Substantially improved SVG support
  • A large number of bug fixes

What did not make it

Session save and restore was deferred to GTK 4.26.

That is the disappointing entry. Reopening your applications, in their previous positions, after a logout or reboot is something X11 desktops did unevenly for decades and Wayland has largely not done at all. It has been planned and discussed, and it slipped again.

The GTK side is only half of it: the compositor has to participate in restoring window positions. That coordination is presumably why it keeps taking longer than expected.

Getting it

GTK 4.24 arrives with GNOME 51 for most people, so your distribution’s schedule decides when you see it. Nothing here requires application changes, which means the scaling and frame timing improvements apply to every GTK4 application you already run.

pkg-config --modversion gtk4

# check your current scaling setup
gsettings get org.gnome.mutter experimental-features
echo "$GDK_SCALE / $GDK_DPI_SCALE"

It lands alongside GNOME OS enabling zswap by default and the Convey fork of Geary, in a busy stretch for the GNOME stack.

Background reading

Explainers for the concepts behind this story.