Invest in the Future You Want to See. Closing Soon!

A First Public Offering of Purism Stock on StartEngine. Minimum $500.

Invest Now

Guido Günther

Guido Günther

Phone Developer
Guido Günther

Latest posts by Guido Günther (see all)

Librem 5 May 2020 Software Development Update

This is another incarnation of the software development progress for the Librem 5. This time for May 2020 (weeks 19-22). Some items are covered in more detail in separate blog posts at The idea of this summary is so you can have a closer look at the coding and design side of things. It also shows how much we’re standing on the shoulders of giants reusing existing software and how contributions are flowing back and forth between upstream and downstream projects. This quickly gets interesting since we’re upstream for some projects (e.g. Calls, Phosh, Chatty) and downstream for others (e.g Debian, kernel, GNOME). So these reports are usually rather link heavy pointing to individual merge requests on or to the upstream side (like e.g. GNOME’s gitlab).

Adaptive Apps

This section features improvements on adaptive apps, GTK, and underlying GTK based widget libraries like libhandy:

Short and instant messaging

Chats (aka Chatty) handles SMS and instant messaging via XMPP. It has experimental support for various other formats via libpurple. Cleanups and bug fixes continued during May:

  • Introduce a ChattyMessage class to handle different message types consistently: chatty!326
  • Cleanup ChattyConversations: chatty!332
  • Emit ‘avatar-changed’ if associated buddy avatar changes to handle avatar updates: chatty!333
  • Utils: Format time as per the current user settings: chatty!334
  • API to get and/set encryption and use it to simplify encryption handling: chatty!335
  • Window: Fix selection flicker when chat is updated: chatty!336
  • List-row: Limit message preview to a single line: chatty!338
  • Window: Set selected flag for row only if not folded: chatty!339
  • Chat: Strip client information from get_name(): chatty!340
  • Use ChattyAvatar in main window headerbar and user info dialog: chatty!341
  • pp-buddy: Avoid updating avatar often: chatty!342
  • Silence compiler warnings: chatty!343
  • Tests: Don’t set MALLOC_PERTURB_: chatty!346
  • Window: Show an error dialog if creating SMS with modem missing: chatty!347
  • pp-account: Use purple_core_get_ui() to get ui string: chatty!348
  • Fix various memory leaks: chatty!350 chatty!372
  • Manager: Make sure the user sees errors right away: chatty!353
  • Different UI fixes crammed into one merge request: chatty!354
  • New-chat-dialog: Reset search text when showing dialog: chatty!356
  • New chat dialogs: Handle pressing ‘Enter’: chatty!357
  • Don’t allow messages rows to get the focus. This eases keyboard navigation: chatty!361
  • Use GObject properties and signals more: chatty!374
  • Settings-dialog: Call idle users that (not offline): chatty!375
  • Use GAppliation more. This makes chatty more a regular GTK+ application: chatty!376

Lurch plugin

The lurch plugin is responsible for OMEMO encryption within libpurple:

  • Notify user when a message can’t be decrypted instead of silently dropping it: lurch!5
  • Unbreak the build and run tests during the build: lurch!6

Phone Calls

Calls (the app handling phone calls) now shows notifications on missed calls and emits haptic feedback and saw a long list of translation updates (fa, sv, uk, it, ro, fr, pt_br, jp , thanks Danial Behzadi, Anders Jonsson, Yuri Chornoivan, Antonio Pandolfo, Daniel Șerbănescu, Valéry Febvre, Rafael Fontenelle and Scott Anecito) but there were other small improvements:

  • Build calls against Debian bullseye to make it future proof: calls!112
  • add gbp.conf to make releasing less error-prone: calls!121
  • po: Update po file list and make sure fail CI if we forget to do so in the future: chatty!345
  • Skip i18n for plugins: calls!132
  • Stop busywork for translators: calls!133

Compositor and Shell

This section highlights progress in Librem 5’s GTK based graphical shell name Phosh and its wlroots based compositor Phoc:


  • Blank the display on idle: phosh!300. This finally glues the wlr-output-power-management protocol and GNOME Settings daemon’s power plugin together and can be seen in here.
  • Translations were updated for uk and zh_TW – thanks YuriChornoivan and Yi-Jyun Pan!
  • Phosh now triggers more haptic feedback e.g. on button release and when selecting an activity from the overview


  • We fixed way too early unblank: phoc!151
  • Nícolas F. R. A. Prado fixed compilation with -Wswitch: phoc!148
  • Phoc now automatically enables new outputs to make them ‘plug and play’ again: phoc!152 (diffs)
  • We made test execution in CI more robust to not frustrate developers: phoc!149

On-Screen Keyboard

Gnome Control Center (Settings) / GNOME Settings daemon

Sadiq enhanced several panels upstream:


Feedbackd is responsible for haptic, audio (and later) LED-based feedback:

  • Feedbackd now picks up the configured sound theme: feedbackd!18
  • Feedback is now ended/canceled when invoking lfb_uninit: feedbackd!19 This makes sure feedbacks are stopped when an app quits
  • Rasmus Thomsen fixed a compile race that could lead to build failures: feedbackd!15

Linux Kernel

The process of upstreaming our Linux kernel work progress is covered in a separate report. The current one is for Linux 5.7 so this is mostly about downstream improvements:


These were the releases during May for projects we’re upstream:


If you made it down here and want to start contributing join us on matrix. We certainly welcome patches and issue comments on If you want to grab an issue and can’t think of a particular problem, check the easy and help wanted tags in our GitLab instance. See you next month.

Discover the Librem 5

Purism believes building the Librem 5 is just one step on the road to launching a digital rights movement, where we—the-people stand up for our digital rights, where we place the control of your data and your family’s data back where it belongs: in your own hands.

Preorder now


Recent Posts

Related Content