The egmde snap on 16.04

A small update to the egmde snap


Mir is disabling mirclient support (by default)

You would have to be following Mir development very closely to have noticed that we’ve changed the default to not supporting clients using the mirclient API. That’s because it isn’t very useful any more. Only the 16.04 version of Mesa carries the necessary patches and it doesn’t work at all with EGLStream or other platforms we are considering.

As a result I’ve been looking at various places we assume the existence of this support and updating code and scripts to continue working.

The egmde snap has been useless on 16.04

If you’ve ever installed the egmde snap on 16.04 you’ll have quickly realized that the Wayland support from GTK3 and Qt5 based applications doesn’t work well with it. You might get something on screen, but nothing usable.

While I was testing the various scenarios for using Mir and switching the mirclient support on and off I found that the mirclient support can be made to work (for a sufficiently flexible value of “work”) with egmde and added the necessary logic to the egmde snap.

The egmde snap is not quite useless on 16.04 now

As a result of this, it is now possible to use the mirclient support on 16.04.

GTK3 apps on 16.04 the “gtk-mir” support is built in and they “just work”.
SDL2 apps on 16.04 the “mir” support is built in and they “just work”.
Qt5 apps need the ubuntumirclient module installing. To get this you need to install qtubuntu-desktop from ppa:mir-team/release:

sudo apt-add-repository --update ppa:mir-team/release
sudo apt install qtubuntu-desktop

If you now install and run the egmde snap you’ll find that you can start many applications:

snap install --classic --edge egmde

The screenshot shows egmde hosting qterminal running via ubuntu-mir-client, glmark2-es2-wayland running natively on Wayland and mir_demo_client_eglplasma using the mirclient API directly.

One unfortunate application that doesn’t work is the gnome-terminal when started with no arguments. I’ve succeeded in running this from qterminal with the following command but not investigated further:

gnome-terminal --disable-factory

Using mirclient is not as good as using Wayland

One thing that is obvious from this exercise is that the toolkit support for mirclient on 16.04 is not as good as the toolkit support for Wayland on more recent releases.

With the egmde snap on Fedora, Arch, or Ubuntu 18.04 (or later) Wayland applications are usable and basic stuff like moving and resizing work. Using the mirclient support, moving and resizing doesn’t work (which is why glmark2 is mostly hidden in the picture above).

Three years is a lot of history

Using mirclient is not as good as using Wayland except on 16.04! The only reason to consider using mirclient on 16.04 is that the Wayland support from 16.04 toolkits is also problematic.

Since 16.04 things have changed:

  • With Wayland things have changed for the better…
    • Tookit support has improved.
    • Better extension protocols have been adopted.
    • Mir supports Wayland
  • With mirclient they have changed for the worse…
    • Toolkits have dropped mirclient support
    • EGL is not supported (even on the Mesa platform)
    • Mir plans to drop support for mirclient

There is no good reason to use egmde on 16.04 and no reason to use mirclient.

Get egmde from the Snap Store


Over the weekend it occurred to me that toolkit support for mirclient actually improved between 16.04 and 17.04 and I forgot to mention that in the OP. The Unity8 desktop was close to being usable in 17.04, so I imagine the move & size problems mentioned were addressed.

If anyone is sufficiently nostalgic to investigate, the improved toolkit support was probably backported to 16.04 by UBports.

1 Like