Mir 2.28¶
5 June 2026
What’s new in Mir 2.28.0¶
Server decoration and graphics selection¶
Mir implements org_kde_kwin_server_decoration, contributed by @tsimonq2 (#4956).
Rendering accepts EGL_TEXTURE_EXTERNAL_WL, thanks to @Azkali (#4888).
The MIR_PIN_COMPOSITING_TO environment variable allows a particular graphics provider to be selected for compositing (#4958).
Logging and Rust Wayland infrastructure¶
This release introduces the initial implementation of the new logging API (#4895). The Rust Wayland frontend gains generated event implementations, global registration methods, object error reporting, and a C++-friendly client and notification handler (#4785, #4825, #4843, #4848). These are infrastructure improvements for the frontend, rather than a replacement for every existing protocol implementation.
Minor features¶
Input and configuration reliability¶
The evdev platform keeps file descriptors from being removed by libinput, in @muhammad23012009’s first contribution (#4853). The Rust evdev platform no longer locks up after a VT switch (#4791).
Linux virtual-terminal cleanup restores the previously active VT, in @AristoChen’s first contribution (#4842).
Live configuration is applied in
start_callback(), array clearing is reimplemented inBasicStoreandIniFile, and failure-mode tests are added (#4978, #4914, #4847).Touchpad settings apply at startup, and disable-with-external-mouse configuration is mapped correctly (#4943).
The Ctrl+Shift+NumLock toggle shortcut is improved, in @deepakshirkem’s first contribution (#4812).
Window management and rendering fixes¶
Positioner constraint adjustment, drag-and-drop action checks, foreign-toplevel handling and application switching receive fixes (#4869, #4892, #4957, #4945).
A DisplayInfo leak is fixed (#4877).
Environment variables that share a name prefix no longer overwrite one another (#4966).
UTC time conversion becomes thread-safe, thanks to @DigraJatin (#4972).
Build and development tooling¶
pkg-config include paths are corrected, thanks to @sfalken (#4907).
XWayland spawning uses
std::formatrather than C string formatting, and insecure temporary-filename APIs are eliminated, thanks to @yotam-medini (#4793, #4813).Wayland connector and polymorphic-pointer handling are tidied to address static-analysis findings, thanks to @DigraJatin (#4804, #4827).
WLCS keyboard support expands protocol testing (#4716), and the workshop development environment is introduced (#4965).
Documentation¶
New documentation covers XDG Portals and releasing Mir (#4868, #4906). @SAY-5 corrects spelling in shared-memory backing, toolkit events and hover-click documentation, including their first contribution (#4854, #4861).