Despite persistent rumors, Mir is not dead: We’ve now tagged and released Mir 0.32.0
Last year Canonical withdrew entirely from Unity8 and dramatically reduced its investment in Mir. Both projects continued with UBports (and for a while Yunit) working on Unity8 and Canonical continuing with Mir but focusing its efforts on IoT which had previously had to compete for attention with phone and desktop.
With Mir 0.32 we’ve reached a point where our Wayland support and, importantly, support in toolkits is reaching and exceeding par with the support for the legacy Mir client API. While there are still a few features (e.g. screencasting) that can only be accessed by the legacy Mir client API they don’t affect most clients and for IoT uses Wayland is the approach we have documented and recommend.
The significant changes
Much improved Wayland support: copy/cut/paste and subsurfaces have been implemented and many bugs fixed.
logind support: this is needed for desktop shell developers using Mir. In particular this is the last puzzle piece needed by UBports to get the Unity8 desktop working on Ubuntu 18.04LTS.
MirAL now supports launching Wayland clients and using Wayland within a Mir based shell.
The full changelog is below.
Getting Mir 0.32
Mir 0.32.0 is in the mir-team/release PPA for Ubuntu 16.04, 17.10 & 18.04:
$ sudo add-apt-repository ppa:mir-team/release
The release tarball is here
This release isn’t being pushed to the Ubuntu archives yet as there’s a blocking problem on 18.10. Expect 0.32.1 in the near future. We will, however be updating the mir-kiosk snap.
Using Mir 0.32
Mir is a set of libraries, not an end-user application. However, there is an example project egmde that can be used to try it out (this works best on Ubuntu 18.04 or 17.10):
Full Mir 0.32.0 changelog
- ABI summary:
. mirclient ABI unchanged at 9
. miral ABI unchanged at 3
. mirserver ABI bumped to 47
. mircommon ABI unchanged at 7
. mirplatform ABI unchanged at 16
. mirprotobuf ABI unchanged at 3
. mirplatformgraphics ABI bumped to 15
. mirclientplatform ABI unchanged at 5
. mirinputplatform ABI unchanged at 7
. mircore ABI unchanged at 1
. mircookie ABI unchanged at 2
. [Wayland] Implement subsurface support
. [Wayland] Initial support for copy, cut and paste
. [Wayland] Make use of the specified output in fullscreen requests.
. [libmiral] Update miral::Keymap to get the default keymap from udev
. [libmiral] Extend the logic for launching apps to support Wayland apps
and provide it as an API for servers to use it. (Fixes #300)
. logind support
. libinput backend: Support running without root privs
. [miral-shell] Options to use toolkit libmirclient support in
miral-desktop, miral-app and miral-run
. [miral-shell] Fix default font on Ubuntu 18.04 and Arch
. [wlcs] Fixes to test framework, more test coverage
- Bugs fixed:
. [Wayland] Implement subsurface support for touches. (Fixes #347)
. [Wayland] Implement Input regions. (Fixes #306)
. [Wayland] Implement/correct implementation of window state changes in
xdg-shell V6. (Fixes #297)
. [Wayland] Implement the common state changing logic in
WlAbstractMirWindow. (Fixes: #311)
. [Wayland] Don't hold a lock in mf::WlShmBuffer while potentially
destroying an object that uses it. (Fixes #355)
. [Wayland] Disconnect a sink when its target window is destroyed
. [Wayland] Send frame notifications even if there is no buffer,
this fixes the gedit lockup when subsurfaces are dismissed.
. Don't synthesize pointer events during gestures. (Fixes #179)
. Notify the compositor of surfaces that have content before they are
added to the scene. (Fixes #328)
. Retry drmSetMaster() a few times and if it doesn't work die.
. Defer initializing DefaultServerConfiguration::reports until any
subclasses have been fully constructed. (Fixes #361)
. Ensure ExternalInputDeviceHub::remove_observer() synchronizes memory
across threads. (Fixes #359)
. Correct the glm matrix used for software cursor transformation