Skip to main content

Your submission was sent successfully! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates from Canonical and upcoming events where you can meet our team.Close

Thank you for contacting us. A member of our team will be in touch shortly. Close

  1. Blog
  2. Article

Alan Griffiths
on 19 November 2018


Display servers solve a large and complex problem. Mir provides a broad and powerful library to solve those problems, but there is a learning curve to use Mir effectively. It is really helpful to have a step-by-step example that covers enough of the issues to get a decent start.

To address this need there’s a set of blog posts based around the development of “egmde” [Example Mir Desktop Environment]: a very simple shell that can either form the basis of further development or provide a platform for experimentation. Note that egmde is not a complete desktop: the tutorials (and the code in egmde) don’t cover aspects of a desktop environment that are not related to using Mir. Missing functionality includes: integrating into the system for screen locking & suspend, policy kit integration,  internationalization, etc.

Usage of egmde

There are currently five articles based around egmde:

  1. Wayland reboot: a Mir server that supports Wayland client apps.
  2. Keymap and wallpaper: getting the correct keymap and adding “wallpaper”.
  3. Integrating a launcher: adds a launcher to select and start apps.
  4. Desktop session: install and use as an alternative desktop.
  5. A touch of touch support: adds support for touch-only operation.

After following these tutorials you should have a good idea how to use the Mir libraries to develop your own desktop.

If you just want to try out egmde it is available as a “classic” snap for use on Ubuntu Classic 18.04LTS or 18.10, or as a “confined” snap (which also works on Ubuntu Core).

Egmde 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, multi-display capability and secure client-server communications based on Wayland.

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

Mir window management is integrated and yet extremely customizable by shell authors using a simple high-level API.

Egmde accepts the Mir window management defaults and does the minimum needed to show how to build on that. It adds identifying the user’s keymap (from gsettings), painting a desktop background, a simple “launcher” and registering with the greeter to provide an “egmde” desktop session.

Source: https://github.com/AlanGriffiths/egmde

Mir: https://mir-server.io/

Related posts


Aaron Prisk
3 April 2024

Creating Snaps on Ubuntu Touch

Community Article

This article was written in collaboration with Alfred E. Neumayer of the UBports Project. Tablets, phones and current technology’s capabilities are phenomenal. Who would have thought a thin, light, barely 10 inch device would provide all the power necessary to run Virtual Machines, wherever one desires while powered on battery? That a sma ...


Holly Hall
15 January 2024

Managing software in complex network environments: the Snap Store Proxy

Internet of Things Article

As enterprises grapple with the evolving landscape of security threats, the need to safeguard internal networks from the broader internet is increasingly important. In environments with restricted internet access, it can be difficult to manage software updates in an easy, reliable way. When managing devices in the field, change management ...


Igor Ljubuncic
21 December 2023

We wish you RISC-V holidays!

HPC Article

There are three types of computer users: the end user, the system administrator, and the involuntary system administrator. As it happens, everyone has found themselves in the last group at some point or another; you sit down to perform a task relevant to your needs or duties, but suddenly the machine does not work as ...