Development News October 2021

Gajim development news

Development News October 2021

Gajim development news

This post marks two years of Gajim development news 🥳 In October, Gajim’s event system received significant changes. These changes lead to improvements in notifications mainly, but also made it possible to display Jingle File Transfers directly in the chat view! Also this month: search filters which help narrow down your search.

Changes in Gajim

Cleaning up Gajim’s internal event system offered an opportunity to rework notifications. There is a decision tree Gajim has to go through until a notification is actually issued. For example, a user might set their status to “Busy”, which should suppress showing notifications (and possibly sounds). Chats and group chats need different handling as well, because group chats can have individual notification settings, which depend on various conditions: is it a private or a public group chat, are we being mentioned by other users, etc. These decisions have been centralized at one place in order to reduce code duplication and to make notification handling easier for developers.

While simplifying Gajim’s event system, Jingle File Transfers came into focus. File transfer event processing had been spread across many places in Gajim, making it hard to migrate away from the “File Transfers” window, which is exclusively used for Jingle File Transfers. After working on this, it is now possible to have multiple widgets process events around file transfers. This means we can have a file transfer widget in the chat view as well! With the new conversation view based on a Gtk.Listbox, it was easy to add a file transfer widget for Jingle File Transfers. Similar to HTTP Upload file transfers, Jingle File Transfers (file offer, progress, success, and error) are now displayed directly in the chat view.

Thanks to first time contributor wtas, Gajim 1.4 will feature search filters! There are several filters for narrowing down your search: after: and before: for filtering by time, from: for filtering by user, and has: for filtering by content. This allows for example to search for a specific file you received some time ago. Here is what a search could look like:

after:2021-08-01 has:file

What else happened:

The service Bad XMPP offers a set of badly configured XMPP services for testing against. Running Gajim against this service uncovered an issue where Gajim’s account wizard became stuck.

Plugin updates

Both Quick Replies and Syntax Highlighting plugins have received a bug fix for an issue where inserting text into the message input failed.

With Gajim 1.4, many things have changed under the hood. These changes affect how plugins interact with Gajim or how they can access data. Starting this month, we’re adapting plugins to all the changes coming with Gajim 1.4.

Changes in python-nbxmpp

python-nbxmpp received code annotations in various places.

As always, feel free to join to discuss with us.