Mir 1.0.0 Release

Mir 1.0.0 Release

We’re pleased to announce the release of Mir 1.0.0. The main things to note with this release are support for the Wayland xdg-shell (stable) extension and improved facilities for customizing display layouts.

Display layout

Mir has a new .display configuration file that tells it how to organize multiple outputs. This is described in

Using Mir 1.0

Mir for internet connected devices

Mir is a set of libraries, not an end-user application. But we also provide the mir-kiosk snap based on Mir. This has been updated to use Mir 1.0.

Many types of device need to provide some sort of graphical output or display to the user. Some examples include digital signage, interactive kiosks, automotive in-car entertainment gateways, smart meters, and the screens seen on everything from washing machines to smart thermostats. All of these need to output graphics to a display but that it is not always easy in an embedded environment.

Mir allows device makers to use a well-defined, efficient, flexible, and secure platform for their graphical environment.

More here: mir-kiosk: a project that uses Mir

Developing with Mir

If you’re using an existing package based on Mir such as the mir-kiosk snap intended for IoT or the Unity8 desktop environment, then this isn’t relevant to you.

If you are a developer interested in using Mir to develop your own shell then it is important to note that Mir provides you with both sensible default behaviour and a simple, yet powerful API to customize that behaviour. There are example programs demonstrating how to customize the window management style for “kiosk”, “tiling” and the default “floating” windows.

Developers using Mir will find it packaged and available on Ubuntu, Fedora and Arch; and soon on Debian. The latest Mir release is available for all supported Ubuntu series from the Mir team’s "Release PPA.

Wayland extension protocols

There are many Wayland “extension protocols” to provide specialized support for specific needs. As anyone can define a bespoke extension protocol it would be impractical to support everything, but Mir will continue to implement those protocols that are important for the projects that it supports. With the Mir 1.0.0 release the list of supported extension protocols is:

  • protocol name=“wayland”
  • protocol name=“xdg_shell_unstable_v6”
  • protocol name=“xdg_shell”

These are sufficient for the vast majority of desktop and IoT applications.

Mir for the desktop

As Mir is designed to handle a wide range of platforms, Mir can be used to create a Wayland based “Desktop Environment” or “Shell”. A couple of examples:

Getting Mir 1.0

To install mir-kiosk on Ubuntu Core:

sudo snap install mir-kiosk

(On classic Ubuntu you currently need to add “–devmode” to this).

To install Mir development libraries or examples

Mir 1.0.0 is in the mir-team/release PPA and will soon be published in the Ubuntu 18.10, 18.04 and 16.04 archives:

sudo add-apt-repository ppa:mir-team/release

The release tarball

The release tarball is here

To install the egmde example

sudo snap install --classic --beta egmde


Here’s the detailed changelog for the Mir 1.0.0 Release:

- ABI summary:
 . mirclient ABI unchanged at 9
 . miral ABI unchanged at 3
 . mirserver ABI unchanged at 47
 . mircommon ABI unchanged at 7
 . mirplatform ABI unchanged at 16
 . mirprotobuf ABI unchanged at 3
 . mirplatformgraphics ABI unchanged at 15
 . mirclientplatform ABI unchanged at 5
 . mirinputplatform ABI unchanged at 7
 . mircore ABI unchanged at 1
 . mircookie ABI unchanged at 2
- Enhancements:
 . [Wayland] A configuration mechanism to select the Wayland extensions
 . [Wayland] Support XDG shell stable
 . [Wayland] Improve protocol scanner
 . [libmiral] Display configuration file support
 . [libmiral] Make the pid of external clients available
 . [libmiral] Add DisplayConfiguration
 . [console] Ensure the_console_services() is constructed only once
 . [console] An option to select the ConsoleServices provider
 . [mir-demos] Move legacy binaries out of mir-demos package
 . [mir-test-tools] Drop internal test binaries from mir-test-tools package
 . [X11] Experimental X11 support via Xwayland
- Bugs fixed:
 . [Wayland] creating a shell_surface should associate a role immediately.
   (Fixes #512)
 . [Wayland] Default for positioner gravity
 . [Wayland] Use miral test framework for wlcs tests
 . [Wayland] Send popup configure events
 . [Wayland] When setting the pointer cursor apply it. (Fixes #555)
 . [Wayland] Hook the OutputManager into display reconfiguration
   notifications. (Fixes #585)
 . [Wayland] Remove hard coded values for output geometry (screen
   orientation and pixel arrangement). (Fixes #601)
 . [miral-kiosk] Don't allow apps to specify size of "maximized" windows.
   (Fixes #454)
 . [Mir-on-X] Fixed keyboard grab issue on Arch. (Fixes #549)
 . [eglstream-kms] Platform re-enabled, but no GL client support
 . [console] Fix VT switching with LinuxVirtualTerminal. (Fixes #499)
 . [console] Avoid breaking X11 desktops that have not claimed the VT from
   logind. (Fixes #535, #539)
 . [console] LogindConsoleServices: Support VT switching. (Fixes #459)
 . [libmiral] Parents of the active window also have focus. (Fixes #522)
 . Fix "sanitize" builds
 . Racy shutdown in miral-tests and miral_wlcs_tests. (Fixes #543)
 . Fix a locale initialization crash on musl
 . [mesa] Use both id and drm_fd as output identifier for cursor buffer
   as we're not sure of the uniqueness of either. (Fixes #556)
 . [mesa] Disconnected hardware has no modes: invent a (slow) refresh rate.
   (Fixes #587)
 . [input] Guess output for touchscreen (works with one of each).
   (Fixes #605)

Over the last weekend, I’ve also pushed Mir 1.0.0 into Fedora 29 and Rawhide (which will become Fedora 30).

For users of Fedora 28, builds are in progress in the ngompa/Mir COPR to offer a backport of Mir 1.0.0 for experimentation and development purposes. Mir 1.0.0 is available now in Rawhide, and will be available in Fedora 29 shortly.


mir package for Arch GNU/Linux was also updated to 1.0.0 in AUR.
You can install it from here.


As a follow up to this release, we’ve updated the tutorials guiding you through getting a kiosk device up. Have a look at http://bit.ly/secure-kiosk and let us know what you think :slight_smile: