Purism, the company developing the Librem 5 smartphone and the free PureOS distribution, release of the library , which develops a set of widgets and objects for creating user interfaces for mobile devices using GTK and GNOME technologies. The library is being developed as part of the porting of GNOME applications for the user environment of the Librem 5 smartphone.
Project Code under the GPL 2.1+ license. In addition to supporting applications in C, the library can be used to create mobile variants of application interfaces in Python, Rust, and Vala.
Currently, the library consists of 24 widgets covering various standard interface elements such as lists, panels, editing blocks, buttons, tabs, search forms, dialog boxes, etc. The suggested widgets allow for the creation of universal interfaces that function seamlessly on both large screens of PCs and laptops as well as on small touchscreen displays of smartphones. The application interface dynamically changes according to screen size and available input devices.
The key goal of the project is to provide the ability to work with the same GNOME applications on smartphones and PCs. The software for the Librem 5 smartphone is based on the PureOS distribution, which uses a Debian package base, GNOME desktop, and a GNOME Shell adapted for smartphones. Using libhandy allows you to connect the smartphone to a monitor and obtain a typical GNOME desktop based on a single set of applications. Among the applications ported to libhandy are: GNOME Calls (Dialer), gnome-bluetooth, GNOME Settings, GNOME Web, Phosh (Dialer), Daty, PasswordSafe, Unifydmin, Fractal, Podcasts, GNOME Contacts, and GNOME Games.
Libhandy 0.0.10 is the latest preliminary version before the formation of a significant 1.0 release. This new release introduces several new widgets:
- — adaptive replacement of the GtkStackSwitcher widget that automatically arranges the layout of tabs (views) based on screen width. On large screens, icons and titles are placed in a single row, while on smaller ones, a compact layout is used where the title appears below the icon. For mobile devices, the button block is moved to the bottom.

- — a container for displaying a panel that takes the available size into account, removing details when necessary (for wide screens, the full header panel for switching tabs is displayed, but if there isn't enough space, a widget that simulates the header appears, and the tab switcher is moved to the bottom of the screen);
- — implementation of an extended bar similar to GtkHeaderBar but designed for use in an adaptive interface, always centered and fully filling the header area in height;
- — an adaptive version of the settings configuration window divided into tabs and groups;
Notable improvements related to adapting GNOME applications for use on smartphones include:
- In the interface for receiving and making calls (Calls), a PulseAudio loopback module is used to connect the modem and the device's sound codec in ALSA when a call is activated, and the module is unloaded after the call ends;
- In the messaging application (Messaging), an interface for viewing chat history has been implemented. An SQLite database is used to store history. A verification option for accounts has been added, which is now checked through a connection to the server, with a warning displayed in case of failure;
- In the XMPP client, support for exchanging encrypted messages through the plugin with the implementation of end-to-end encryption mechanisms . A special indicator has been added to the panel to signal whether encryption is applied in the current chat or not. There is also a new capability to view identity fingerprints, either for oneself or for another chat participant;
- In GNOME Web, new Libhandy 0.0.10 widgets have been implemented, allowing the configuration interface and browser panel to be adapted for mobile screens.
Source: opennet.ru

