Unity8: a project that uses Mir


Unity8 is a graphical shell targeting a range of devices and form factors including phones, tablets, laptops and desktops.

Unity8 delivers a “convergent” experience: The user interface dynamically adapts to the display and input capabilities of the device it runs on. For example, when running on a smartphone, when the phone is connected to an external display, keyboard and mouse, Unity8 automatically transitions to a traditional “desktop shell experience”.

Usage of Unity8

Unity8 is a key part of the Ubuntu Touch smartphone OS and provides its “convergent” experience. A key part of the Ubuntu Touch vision is that traditional linux command line and “desktop” applications work when using both the “phone shell” and the “desktop shell”.

Edit: A few days after this blogpost the UBports team blogged:

“UBports’ users are happily plugging their devices into monitors using a SlimPort adaptor, and pairing them with WiFi keyboards, in order to take advantage of a wealth of Free and Open Source software, like LibreOffice, Gimp and Firefox. And this is thanks to Unity8.”

Enabling Unity8 for the Ubuntu desktop is a work in progress. Instructions for installing an experimental preview are here. There is also work under way to target other distributions such as Fedora, Debian and Arch.

Video of Unity8 on Ubuntu 18.04: https://www.youtube.com/watch?v=7IcHPhBOydk

Unity8 uses Mir

Mir simplifies the complexity that shell authors need to deal with: it provides a stable, well tested and performant platform with touch, mouse and tablet input capability, and secure client-server communications.

Mir deals with the initialization and configuration of a broad array of graphics and input hardware, abstracts hardware differences away from shell authors (transparently dealing with hardware quirks) and integrates with system components such as greeters.

Mir’s modular design means it can integrate well with Qt/QML, meaning desktop shells can be written in a higher level language.

Unity8 customizes Mir’s default window management (to give the “convergent” experience) and provides components of the desktop: various panels, server-side decorations, transitions and animations.

Project: https://ubports.com/

Source: https://github.com/ubports