Mir 2.25

17 December 2025

Mir 2.25.2

Build and package upgrades

pkg-config discovery finds xkbcommon.h on openSUSE Tumbleweed, fixing builds that could not locate the header (#4544). libmirplatform-dev can be upgraded when mir-renderer-gl-dev is installed, addressing the transition from the old renderer development package (#4563).

Mir 2.25.1

pkg-config version information

Mir’s pkg-config files include their missing version information again. Downstream builds can use this metadata when checking Mir dependency versions (#4544).

What’s new in Mir 2.25.0

Wayland capture, data control and toplevel listing

Mir supports ext_foreign_toplevel_list_v1 and ext-data-control. Initial, partial implementations of ext-image-capture-source and ext-image-copy-capture provide the foundations for image capture. Wayland extension management is reworked so connections originating from the server can always use their required extensions.

Rust input platform

An evdev input platform implemented in Rust is introduced alongside the existing input infrastructure. The input-platform explanation is updated with threading information for developers working on input handling.

Accessibility and application switching

Cursor-scale animation is improved and LocatePointer is added to help users find the pointer. ApplicationSwitcher provides application-switching support, with StandardApplicationSwitcher offering an easier integration path for shells. The new FloatingWindowManager provides a replacement for MinimalWindowManager.

Minor features

Compositor APIs and logging

Window rendering handles opaque regions on transparent surfaces. Security events use OWASP-style logging, geometry::Value gains generic accessors for type-safe conversion, and mir::report_exception() moves to mircore. The mirplatform headers needed by external consumers are published.

Rendering and input fixes

  • Cursor icons update with XTerm (#4134). If no requested cursor theme loads, Mir falls back to its internal theme (#439).

  • The magnifier filter handles events correctly when magnification reaches its limits (#4386).

  • GL resource destruction ensures the correct EGL context is current (#4460).

  • XWayland menus use cached geometry to initialize their position (#4512).

  • Subsurface placement above or below the parent respects z-ordering (#4332).

  • WindowInfo::clip_area accounts for scaled outputs (#4484).

  • The platform checks DRM_CAP_SYNCOBJ_TIMELINE before providing DRMRenderingProvider.

  • Cursor scaling no longer truncates the size in a way that can cause a crash (#4377); an intermittent crash is also fixed (#4323).

Developer documentation

The project adds a release-notes template and Copilot instructions, updates its input-platform threading explanation, and refreshes documentation links.

Backwards-incompatible changes

Renderer packaging

The separate mir-renderer-gl components are folded into mirplatform. Consumers of the former renderer packages should review their build and package dependencies when upgrading.

Deprecated features

MinimalWindowManager

MinimalWindowManager is deprecated in favour of FloatingWindowManager. New compositor implementations should use the replacement, and existing implementations should plan their migration.