Lomiri

From postmarketOS
Note This UI has to be enabled manually. Please follow the installation instructions to install.
Lomiri
motorola-harpia running Lomiri
motorola-harpia running Lomiri
Name Lomiri
Graphics stack Mir on Wayland
Toolkit Qt 5
In postmarketOS
Package postmarketos-ui-lomiri
Status Available

The Lomiri desktop environment originally developed by Canonical and now maintained by the UBports Foundation. Originally, Lomiri usually only worked on Ubuntu Touch using Halium and custom Click apps. On postmarketOS, Lomiri can run using mainline Linux and all the benefits of the Linux app ecosystem.

About

Originally called Unity8, Lomiri was meant to bridge the gap between desktop and mobile computing through the function called convergence. Lomiri originally only used the Mir display server, but now uses a mixture of Wayland and Mir, with XMir handling XWayland.

Status

Lomiri (formerly known as Unity 8) is available in the pmaports branch feature/lomiri.

Installation

Note The work on Lomiri hasn't been finished yet - expect bugs

There are two ways to install Lomiri. The first being using the version in the feature/lomiri branch of pmaports. The second being using the version in JustSoup's personal development fork.

You would want to use the feature/lomiri-dev version if you want the version vetted by the pmos devs for quality. You would want to use the JustSoup development fork if you want the newest improvements to Lomiri on postmarketOS.

feature/lomiri

Navigate to ~/.local/var/pmbootstrap/cache_git/pmaports and run git checkout feature/lomiri

Then choose lomiri in pmbootstrap init and make sure to select "y" when prompted "Build outdated packages during 'pmbootstrap install'?".

If you want to return to the usual pmaports, just run git checkout master in your pmaports directory.

Development Fork

Icon WARNING: This fork is a community contribution and has not been officially verified by postmarketOS developers. As such, it's advised to exercise caution as it may potentially contain malicious elements.

JustSoup has created a bootstrap tool to make it easier to set up the development branch. Just run the tool with the --install argument to set it up. Then choose lomiri in pmbootstrap init and make sure to select "y" when prompted "Build outdated packages during 'pmbootstrap install'?".

If you want to return to the usual pmaports, just run the script again but instead pass the --uninstall argument and the script will reset your pmaports directory.

Alpine Package

Note Installing Lomiri manually instead of through pmbootstrap is not recommended. Lomiri needs a lot more than just a launch script to even run. Here Be Dragons.

If the package postmarketos-ui-lomiri was installed, either through pmbootstrap install or manually, Lomiri should start automatically. If Lomiri was installed another way, such as the package lomiri, run mkdir -p ~/.config/lomiri && touch ~/.config/lomiri/wizard-has-run and then proceed with the script below.

#!/bin/sh

export MIR_SERVER_CURSOR=null
# Set maliit-keyboard as the input module
export QT_IM_MODULE=maliit
export MALIIT_FORCE_DBUS_CONNECTION=1
# Declare the icon theme
export UITK_ICON_THEME=suru # ?
# elogind only sets DISPLAY so we need to set this
export WAYLAND_DISPLAY=wayland-0
# Use elogind for session management
export LOMIRI_AS_SYSTEMD_UNIT=1
# Applications require unthrottled touch input
export QML_NO_TOUCH_COMPRESSION=1

# Debug environment variables
#export G_MESSAGES_DEBUG=all
#export env QT_LOGGING_RULES='qt.qpa.miral.*=true'
#export env QT_LOGGING_RULES='qt.qpa.miroil.*=true'
#export env QT_LOGGING_RULES='qtmir.*=true'

# Pass required env variables to dbus
dbus-update-activation-environment MALIIT_FORCE_DBUS_CONNECTION=1
dbus-update-activation-environment WAYLAND_DISPLAY

# Device-specific adjustments
. /usr/share/misc/source_deviceinfo
if [ "$deviceinfo_codename" = "qemu-amd64" ]; then
	export MIR_MESA_KMS_DISABLE_MODESET_PROBE=1
elif [ "$deviceinfo_codename" = "pine64-pinephone" ]; then
	export MIR_MESA_KMS_USE_DRM_DEVICE=card1
	export QT_SCALE_FACTOR=2 # TODO: Automatically set this based upon device scaling factor instead of adding it in a per-device adjustment
fi

superd &

lomiri

Troubleshooting

Note Tip: Try checking ~/.local/state/tinydm.log for errors.

Since Lomiri is in such an early state, these tips are very useful for development and porting.

  • To start a Click GUI app through SSH or a terminal:
lomiri-app-launch <app id> [uris]
  • To start a normal GUI app through SSH or a terminal:
export DESKTOP_FILE_HINT=/path/to/.desktop/file/of/launched/application
lomiri-app-launch [app-name]
  • To change brightness using repowerd:
repowerd-brightness-tool
[preset or value]
  • (NOTE: Scaling does not work at all yet.) If the automatic scaling seems off, edit your lomiri-deviceinfo file to change the gridunits value to the value of:
[display ppi] * 0.05236
  • To stop the Wizard from running on first boot
mkdir -p $HOME/.config/lomiri
touch $HOME/.config/lomiri/wizard-has-run

Known Issues

See pmaports&1