Ubuntu Frame aims to power graphical applications for embedded devices like interactive kiosks, smart retail solutions, and so on.
With Ubuntu Frame, developers no longer need to integrate and maintain partial solutions such as DRM, KMS, input protocols or security policies to power and secure their displays. This means less code to manage, less opportunities for bugs and vulnerabilities in untried code, and more time for developing the content of the display.
Ubuntu Frame supports Flutter, Qt, GTK, Electron, and SDL2, as well as HTML5 and Java apps. Its main goal is to provide all components developers need in an embedded graphical application, including secure communication, touch screen support in addition to mouse and keyboard, and so on, to allow them to focus uniquely on the display content.
Security is enforced by running the client and server apps in separate containers that can only communicate with Ubuntu Frame using a secure socket.
Ubuntu Frame's architecture is based on Wayland, a display server protocol to enable the communication between a display server and its clients. Wayland was created as a modern and more secure replacement of the X Window System.
You can run Ubuntu Frame on a desktop system, a virtual machine, or any devices running Ubuntu Core or compatible with snaps. In can be installed running
snap install ubuntu-frame
You can build and test your app using a desktop-based environment, then install it remotely. For this you are required to create a snap to package all the files of your app and its dependencies. Canonical provides a kiosk example that can be used as a starting point. Once you are done with the development, you can create a snap for your embedded device architecture running snapcraft remote-build
. The generated snap can then be copied over using scp
and installed and run on the device.
Ubuntu Frame is similar to Cage, another Wayland-based solution to build kiosk apps. It is not clear how mature cage is in comparison to Ubuntu Frame, although Canonical's long term support guarantee of ten years sets the latter apart. Furthermore, Canonical says Ubuntu Frame has been in development for seven years and used in production for five, which would make it a mature graphical server for embedded devices.