Updates on bringing snapd (and snaps) to Ubuntu Touch

Little update on my side and the future focus of bringing Snaps to Ubuntu Touch, the idea has changed a bit, or narrowed down to a certain degree.

We might vendor in snapd .deb packaging into UBports repos as the CI and experimentation area (with preference on not re-execing snapd from it’s snapped up updated package) for now, with custom patches applied on top to provide libhybris enablement and other compatibility changes to adapt all the DBus API namespace changes we went through between the unity8 and related interfaces, etc. Probably many more things that cannot be listed easily beforehand that would break somewhere somehow, but we need a clear path forward in this multi-disciplinary effort.

GTK4 apps currently expose an issue where RGBA gets color-swapped with the GLES renderer enabled when fullscreening an app, and the chance of it being a GTK4 issue (has worked on Qt and SDL from the get-go) is pretty high.

Otherwise, Workshops as a Flutter example works in a Desktop mode scenario. Touch-only Flutter apps would not since they don’t summon the On-Screen Keyboard yet when a text area is tapped.

For many common CLI usecases LXD went pretty well when running privileged containers (user-level containers aren’t working at the moment), also Docker failed to install properly due to AppArmor incompatibilities, which adds another reason to patching up snapd itself reasonably soon for it to work on Touch.

These are the latest gatherings of enabling Snaps on Ubuntu Touch. A bit of a possibility of coordinating that with core upstream needs in the long run would be good too.


Another round of updates here in Ubuntu Touch Snap enablement land!

Since focal OTA-3 released with preliminary Snap support (which still requires rw-mounting the rootfs and installing snapd by hand), there has been some further movement with regards to making Snaps work well on Touch.

Not only do the patches enabling snap-confine to use driver blobs (from the device vendor’s Halium side) provide GLES now with the Flutter-based Snap Store, it also neatly integrates with a freshly ported over Polkit agent on the desktop environment side of things.

Need proof? drum roll

Here we have the new Ubuntu Snap Store running neatly with the Lomiri (ex-Unity8) desktop, asking for the user’s permission to install an app from the store.

Another one is teaching snapd to respect the hybrid rootfs layout (classic-but-readonly rootfs with selective writable paths, locked down /etc/{passwd,groups} as a thing between Classic and Core) and treat creation of users/groups for those Snaps the “extrausers” way inside of snapd by introducing a OnTouch boolean next to OnClassic, the WSL and the Core Desktop based ones.

This allows to pull Cups directly from the Store without installation failing anymore. The last obvious missing pieces are Snaps with DBus services inside which attempt to create files in the currently-still-readonly /etc/dbus-1 paths as well as docker-support generating a conflicting AppArmor profile on old device kernels which I have reported on Launchpad already.