Mir 2.30

24 September 2026

Requirements and compatibility

Rust is now required when building Mir, and the Rust evdev input platform is included in packaging. Build environments that previously omitted Rust must install the Rust toolchain before upgrading (#5185).

Mir builds with libxml++ 5.0 where it is available, while retaining a libxml++ 2.6 fallback for older distributions (#5182, #5201).

What’s new in Mir 2.30.0

Wayland wl_fixes support

Mir now implements wl_fixes, extending the set of Wayland protocols available to clients. This is @andogq’s first contribution (#5193).

Nested development sessions

The workshop gains run nest <shell>, allowing developers to launch a shell nested under another compositor as part of their development workflow (#5089).

Minor features

Input and window management fixes

  • Horizontal scroll-speed configuration now applies correctly (#5151).

  • Attached surfaces, including on-screen keyboards, are no longer treated as kiosk windows (#5157).

  • Pointer enter and leave events use the final surface geometry after window-management changes, avoiding events based on an intermediate position or size (#5165).

  • window_at() safely handles unmanaged surfaces (#5187).

Wayland and rendering fixes

  • Surface role conflicts report the correct Wayland protocol error (#5005).

  • Hidden cursor surfaces receive the cursor role (#5168).

  • Screen capture reuses its renderer and handles output resizing correctly (#5119).

  • GBM/KMS configurations with multiple displays work correctly without requiring clone mode (#5126).

Developer APIs and documentation

A typed wrapper for wl_array improves type safety when handling Wayland arrays, in @yashsolctl’s first contribution (#5194). The documentation clarifies input-trigger protocols (#5074), adds a project roadmap (#5179), explains how to abandon a release (#5211), and updates release-testing environments (#5140).