Context menus (opened with a “right click”) are a common and expected part of the user interface. It can be very frustrating when they are missing, so in Instantbird 0.2 we tried to add one wherever users are likely to expect one.
In the buddy list, the context menu of contacts can be used to start a conversation (although pressing enter or double clicking is usually faster), show the conversation history, rename a contact, move the contact to a different group or remove it from the list:
As exchanging messages is the most important feature of an instant messaging client, we put a great deal of thought into the way the messages are displayed. As we have already explained, we decided to implement the Adium message style system. This system offers a great flexibility to message style authors to display the conversation content the way they want.
In order to give users a good out-of-the-box experience, we have packaged a variety of messages styles by default in Instantbird.
During the 0.2 cycle, we spent a lot of time reworking the conversation window. The conversation window will now feel more familiar to Firefox users. That’s because lots of parts have been borrowed and adapted. In this post, and the next few posts, we will present features that are already present in Firefox, but have been adapted for Instantbird.
Let’s begin with tabs: conversations appear in tabs that work exactly the same way as in Firefox 3.6.
In our roadmap we stated that for 0.2 we were going to improve the conversation window, and especially make it customizable. Let’s show you an overview of what we did.
People are used to see little images like in conversations instead of the plain text version
:-). Testers of Instantbird 0.1.* have probably noticed that this feature was missing. No more.
Instantbird 0.2 supports smileys, and has a theme system for them. Creating a new smiley theme is easy: it is just a bunch of images and a file (JSON format) describing how to use them, bundled into an XPI file.
As you may (or may not) know, we previously wrote that Instantbird 0.1.* was not localizable. The reason evoked for this was the use of gettext by libpurple, which is not compatible with the way XUL applications are localized. I’m going to give more details about the issue, and explain how we solved it for Instantbird 0.2.
Comparison of translation systems used by Mozilla and libpurple:
Inside libpurple, localizable strings are just marked by
For example, you can find this in the code:
description = _("Unknown error");
During the compilation, _() is expanded by the C preprocessor to a call to a gettext function. Gettext tools can analyze the source code, find all strings enclosed in _() markers, and produce a translation template. This template (a .pot file) is then handed to translators, who translate the strings and then provide a .po file for their language.
One of the features we wanted in Instantbird 0.2 was the ability to install libpurple protocol plugins like any other addon. I’m happy to report that this is now possible with current nightly builds.
To demonstrate this feature, I compiled the Facebook Chat libpurple protocol plugin. The result is an installable xpi file of about 200kB, that people can try with nightly builds of Instantbird.
This file contains a binary module compiled for Windows, Linux and Mac OS X (universal), produced by copying the code from here into the Instantbird source tree. This is the quickest way I found to build it, we will need to figure out a better (without having to download and build the whole Instantbird source code) way later. This is the exact patch I used to build it.