We’re pleased to announce the release of Mir 1.1.0. The main thing to note with this release is a new package
mir-graphics-drivers-nvidia with support for Nvidia binary “eglstream” drivers.
There are also some bugfixes and some changes upstreamed by PostmarketOS developers building Mir on Musl and the UBports developers preparing to update the Mir version used by their Ubuntu Touch phones.
Mir’s Nvidia support relies on fairly recent drivers (>= 396) and on ubuntu these are currently only available from the 19.04 archive, which has
nvidia-driver-410. (However, for the bold, ppa:graphics-drivers/ppa has assorted versions for assorted Ubuntu releases.)
Note also that we only build our Nvidia “platform” for the amd64 and i386 architectures.
Finally, we don’t install our “eglstream-kms” graphics platform as part of
mir-graphics-drivers-desktop, instead it is installed by a new
Mir is a set of libraries, not an end-user application. But we provide the mir-kiosk snap based on Mir. At the time of writing the Mir 1.1 build is on the
candidate channel, and will move to
stable once we’ve completed testing:
sudo snap install --beta mir-kiosk
(On classic Ubuntu you currently need to work-around a snapd bug by adding
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.
Developing with Mir
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:
sudo add-apt-repository -yu ppa:mir-team/release
sudo apt install mir-graphics-drivers-desktop # Drivers for Mesa "open" drivers
sudo apt install mir-graphics-drivers-nvidia # Drivers for Nvidia binary drivers
sudo apt install mir-demos # Demo programs
sudo apt install libmiral-dev # Development libraries & headers
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.1.0 release the list of supported extension protocols is:
These are sufficient for the vast majority of desktop and IoT applications.
While egmde works with Mir 1.1 it does not yet work with the “eglstream” support for Nvidia drivers, nor is the driver included in the egmde snap.
The reason egmde doesn’t work with these drivers is that Mir only supports Wayland clients on Nvidia (and not those using the legacy “mirclient” API). That means there is some code needs rewriting. (As egmde is my “hobby” project I expect to find time over the coming weeks to do this - and write about it.)
Here’s the detailed changelog for the Mir 1.1.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 bumped to 16
. mirclientplatform ABI unchanged at 5
. mirinputplatform ABI unchanged at 7
. mircore ABI unchanged at 1
. mircookie ABI unchanged at 2
. eglstream-kms: Fully functional platform for Nvidia drivers >= 396
. MinimalConsoleServices: Android has no VTs, but also doesn't need
anything but `open()` to access devices.
. Clarify and fix focus switching logic
. [Musl] Don't call pthread_rwlockattr_setkind_np() on systems where it
is not defined
. Detect GTest/GMock via pkg-config when possible. Otherwise fall back to
the old huristic
. Add missing packages to Fedora documentation
. Use the more modern method of specifying standard in CMake
- Bugs fixed:
. [Musl] Add missing includes
. Use the correct package name to detect gtest on RPM distributions