---
title: Developing GUIs for IoT is easier with Ubuntu Frame on-screen keyboard
description: Learn about this new feature on our fully secure, easily deployable display
  server. Ubuntu Frame now provides an on-screen keyboard for your application!
url: https://canonical.com/blog/developing-guis-for-iot-is-easier-with-ubuntu-frame-on-screen-keyboard?format=md
---

1. [Blog](https://canonical.com/blog)
2. Article

---

[Gabriel Aguiar Noury](https://canonical.com/blog/author/g-aguiar-noury "More about Gabriel Aguiar Noury")

25 February 2022

# Developing GUIs for IoT is easier with Ubuntu Frame on-screen keyboard

[GUI](https://canonical.com/blog/tag/gui)
[Smart Displays](https://canonical.com/blog/tag/smart-displays)
[Ubuntu Frame](https://canonical.com/blog/tag/ubuntu-frame)

---

Share the article

Isn’t it nice when things just work? When you don’t have to worry about every single detail but only about what creates value? Imagine that you are building a digital kiosk using a touch screen. To log in, users need to input their credentials. Do you want to spend time integrating an on-screen keyboard or rather work on your application?

Yes, how difficult is it to integrate a javascript-based **on-screen keyboard (OSK)**, for example? While managing external code adds complexity to the longevity of big deployment (should we all start looking again where we integrated Log4j?), it is not that difficult to do such integrations to your application. But what if your application is running an external service? Imagine that you want to run an external authentication system like Azure or Google. Then your application will be making API calls to a hosted service on an external server where you can no longer integrate your javascript. Sounds complicated? But most importantly, why should you worry about it in the first place?

We want built-in functionalities that simply work, but we don’t want to keep integrating, securing, and maintaining third-party code. For all the developers embedding graphic applications, that’s what [Ubuntu Frame](https://mir-server.io/ubuntu-frame/) is for. This free display server for IoT devices has all you need to create your kiosk, digital signage, point of sale, infotainment, and more. Do you need a full-screen display of your app? Easy. Want to add a complete range of touch/gesture support? Done. How about window dynamics? Covered. And input from mouse, keyboard and on-screen keyboard? Yes.

We are happy to share with you this new feature on our fully secure, easily deployable display server. Ubuntu Frame now provides an on-screen keyboard for your application and any other external service that you are running.

## An IoT on-screen keyboard with enterprise features

To solve these challenges for our developers, we didn’t have to look too far. We promote open source, we contribute to open source and we work with open source. To create Ubuntu Frame OSK, we selected [Squeekboard](https://gitlab.gnome.org/World/Phosh/squeekboard), an on-screen keyboard built by [Purism](https://puri.sm/) for the [Librem 5](https://puri.sm/products/librem-5/). We chose Squeekboard because it’s modern, stable, and actively maintained. Maintainers and contributors also made Squeekboard really easy to work with, plus it supports a large and growing number of languages and layouts, such as US, German, Russian, Arabic, and many more.

As such, Squeekboard was the best choice, and by snapping it and integrating it with Ubuntu Frame, it is now ready to be used out-of-the-box.

### Do more with Ubuntu Frame’s OSK

This integration with Ubuntu Frame opens many doors for developers. First, it is really easy to use. You just need to develop your app with a supported framework (GTK3, Flutter, Qt, etc.), connect it to Ubuntu Frame, and the OSK will be enabled by default if you are using [Ubuntu Core](https://ubuntu.com/core). This means less code to manage, fewer opportunities for bugs, and fewer vulnerabilities in untried code. What do you get? More time for developing the content of the display, and a reliable and secure OSK for your users. Plus, the OSK looks good on all screen sizes and does not require significant CPU, memory, or graphics resources.

Security is also paramount for these devices. In addition to protecting apps from each other, [Snap confinement](https://snapcraft.io/docs/snap-confinement) allows us to give special privileges to specific Snaps. Therefore, by default, Ubuntu Frame only accepts virtual keyboard input to come from Ubuntu Frame OSK. Even if a malicious or misbehaving code gets into your Ubuntu Frame device, it would be unable to use the OSK interface to send fake input to other apps (like keystroke logging). This is something desktop-based applications are generally vulnerable to.

For the final user of your graphic application, this integration also has several benefits. While your device will be running your main application, it could also use external services as with the example given with the authentication system. For the user, having the same device but getting 2 or more sets of OSK just degrades the overall UI/UX. A uniform UI/UX experience between different applications should be the goal. Having an integrated OSK provides this functionality.

## Try it today!

Follow the next link to learn more about [Ubuntu Frame’s OSK](https://discourse.ubuntu.com/t/on-screen-keyboard-support-in-ubuntu-frame/25840).

If you are new to Ubuntu Frame, check our [website](https://mir-server.io/ubuntu-frame/) and this easy tutorial for [creating your web kiosk](https://ubuntu.com/tutorials/secure-ubuntu-kiosk#1-overview).

* Explore our [developer guide for embedding IoT GUI with Ubuntu Frame](https://ubuntu.com/engage/Embedding_IoT_GUI_with_Ubuntu_Frame)

[Get in touch

Interested in running Ubuntu in your organization?](https://ubuntu.com/about/contact-us/form)

## Sign up for our newsletter

Get the latest Canonical news and updates in your inbox.

Work email:

\*I agree to receive information about Canonical's
products and services.

By submitting this form, I confirm that I have read and agree to [Canonical's Privacy Policy](https://canonical.com/legal/dataprivacy).

Sign up

## Share on

---

## Related posts

[### The journey from mir-kiosk to Ubuntu Frame](https://canonical.com/blog/the-journey-from-mir-kiosk-to-ubuntu-frame)

We now deliver Ubuntu Frame, a display server for embedded devices that makes it easy for developers to deploy their graphics applications on Linux. Ubuntu Frame simplifies the...

[Gabriel Aguiar Noury](https://canonical.com/blog/author/g-aguiar-noury)

28 March 2022

[### Mir 2.7 brings idle timeout and OSK support for Qt applications](https://canonical.com/blog/mir-2-7-brings-idle-timeout-and-osk-support-for-qt-applications)

We are glad to announce the release of Mir 2.7 — our open source and secure display server for building Wayland-based shells. Mir provides a set of libraries and a Wayland...

[Gabriel Aguiar Noury](https://canonical.com/blog/author/g-aguiar-noury)

28 February 2022

[### Mir 2.5, incorporating new features to improve the development of embedded graphic applications](https://canonical.com/blog/mir-2-5-enhancing-digital-signage-and-smart-screen-development)

With another release of Mir, we have prepared a new blog with the a roundup of the product’s newest features. Mir is our flexible display server that provides a set of...

[Gabriel Aguiar Noury](https://canonical.com/blog/author/g-aguiar-noury)

13 October 2021

[### Early access to the LXD graphical user interface](https://canonical.com/blog/lxd_ui)

Early access to LXD graphical user interface is now available.

[Miona Aleksic](https://canonical.com/blog/author/mionaalex)

27 June 2023
