A bit of history
Mir started out as a library for developing compositors in general and specifically for Unity8 (now Lomiri). While Lomiri is still an active community project, in recent years the focus for Mir has been Ubuntu Frame.
While there have been proof-of-concept examples of more complex compositors it wasn’t until last summer that I decided to revisit using Mir for a “desktop environment”. The result of this is Miriway a Mir based Wayland compositor with enough configuration options to support a range of desktop environments.
What is Miriway not?
Miriway isn’t a full featured desktop environment but it could, in principle, be used to build one.
It also isn’t fully “desktop ready” as there are quite a lot of “papercut” concerns that need to be fixed in Mir.
But it does provide a way to test Mir and other components of a desktop environment that makes these “papercuts” visible and much more likely to be fixed.
The Miriway snap
Miriway is available as a snap:
This combines Miriway with some additional desktop components (at the time of writing these are
Xwayland) to provide a (very basic) desktop environment.
sudo snap install --edge --classic miriway
After this you can select “Miriway” from the “cog menu” at login:
You don’t have to use Miriway as a snap, it can be downloaded, built and installed from github. But if you do this (or have done this in the past) beware that there are some differences in the configuration that can confuse the snap distribution.
If you have experimented with Miriway in the past, you may want to delete (or rename) the following files to avoid incompatibility with the snap:
Configuring the Miriway snap
Installing the snap creates a couple of default configuration files:
$ find /etc/xdg/xdg-miriway/ -type f /etc/xdg/xdg-miriway/yambar/config.yml /etc/xdg/xdg-miriway/miriway-shell.config
When you start Miriway these are the configuration files that will be used unless
miriway-shell.config has been overridden. For example, you can copy the default
~/.config and modify it, the snap will then use this version. Here is the default content:
~$ cat /etc/xdg/xdg-miriway/miriway-shell.config x11-window-title=Miriway idle-timeout=600 app-env-amend=XDG_SESSION_TYPE=wayland:GDK_USE_PORTAL=none:XDG_CURRENT_DESKTOP=Miriway:GTK_A11Y=none shell-component=dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP xwayland-path=/snap/miriway/current/usr/bin/Xwayland ctrl-alt=t:miriway-unsnap /snap/miriway/current/usr/local/bin/miriway-terminal shell-component=swaybg -i /usr/share/backgrounds/warty-final-ubuntu.png shell-component=yambar --config="/etc/xdg/xdg-miriway/yambar/config.yml" shell-component=miriway-unsnap /snap/miriway/current/usr/bin/synapse --startup shell-meta=a:miriway-unsnap /snap/miriway/current/usr/bin/synapse meta=Left:@dock-left meta=Right:@dock-right meta=Space:@toggle-maximized meta=Home:@workspace-begin meta=End:@workspace-end meta=Page_Up:@workspace-up meta=Page_Down:@workspace-down ctrl-alt=BackSpace:@exit
The lines you are most likely to customise are the following:
ctrl-alt=t:miriway-unsnap /snap/miriway/current/usr/local/bin/miriway-terminal shell-component=swaybg -i /usr/share/backgrounds/warty-final-ubuntu.png shell-component=yambar --config="/etc/xdg/xdg-miriway/yambar/config.yml" shell-component=miriway-unsnap /snap/miriway/current/usr/bin/synapse --startup shell-meta=a:miriway-unsnap /snap/miriway/current/usr/bin/synapse
shell-component= lines specify that
synapse (from the snap) are started as part of the shell. You can add to (or replace) these with components from your host environment. But if you do this, prefix the command with
miriway-unsnap. For example, you could replace
shell-meta=a: gives a command to launch when
Meta-A is pressed. This can also be replaced (again prefixed with
shell-meta=a:miriway-unsnap wofi --show drun --location top_left
The Miriway snap makes it easy to experiment with Mir in a desktop scenario and the Mir team has been “dogfooding” Miriway. As a result we have made some improvements and we are committed to improving this experience over the coming months.