Boss Mode extension

Gnome-shell’s popup notifications and integrated chat are great, but sometimes I’m annoyed when the content of a chat is displayed on screen at the wrong moment (for instance if a colleague sends you a work-related message while you are sitting at a conference next to other people).
The Boss Mode extension allows you to quickly disable notifications, without any UI feedback, by just pressing Win+B. Press Win+N to enable notifications again.

The default keybindings can be modified by clicking the preferences button on the extension page (next to the switch to enable/disable the extension).

Better notification support

Yesterday I released a new version of my message notification extension for gnome-shell (3.2 and 3.4), to install it or to update it just visit its page on extensions.gnome.org.

The main feature in the new version is that it just handles notifications coming from well-known applications: Empathy, XChat, XChat-GNOME, Pidgin and notify-send. Handling the Empathy notifications is easy because they are well integrated with the shell, but the other notifications required some hack because all the applications handle notifications in different ways. I did my best to make the notifications as useful as possible, similar to the Empathy ones, but there are some small limitations.
Some of the handled applications require plugins to show notification bubbles:

  • Pidgin: Click on the “Tools” menu and then “Plug-ins”. Make sure that the “Libnotify Popups” plugin is enabled. If the plugin is not in the list it means you need to install it. On Debian the package is called “pidgin-libnotify”, other distros should have a package with a similar name.
  • XChat-GNOME: Click on the “Edit” menu and then “Preferences”. In the “Scripts and Plugins” tab make sure that “On-screen display” is enabled.
  • XChat: Click on the “Settings” menu and then “Preferences”. In the “Alerts” tab make sure that “Show tray baloons” is enabled for both “Private Message” and “Highlighted Message”. If the notifications pile up in the bottom right corner of your screen and clicking on them does nothing, it means that XChat is using notify-send because it cannot find libnotify. I don’t know how to fix this issue on different distros, but I found a Red Hat bug explaining the problem.

Message notification
Notifications coming from Empathy and XChat-GNOME

Is there any other common application that you would like to be handled by my plugin? The only prerequisite is that they somehow use standard notification bubbles (and this means I cannot implement it for Skype).

If you are looking for the source code, it’s in this git repository.

Updated message notifier and new cooking blog

A few months ago I wrote a gnome-shell extension that shows how many conversations with unread messages you have, so that I could stop missing incoming messages.
I updated the extension so it now works better and it can also show what the incoming notifications are when you press the icon. You can get the new version (and install it with just two clicks) from extensions.gnome.org. If you previously installed the extension from git and you don’t have an update button on that page it could mean you need to first manually remove ~/.local/share/gnome-shell/extensions/message-notifier@shell-extensions.barisione.org/ and reload the shell (ALT-F2 and then type “r”).

Message notification

Note that the extension shows the number of conversations with new messages and not the number of messages; I don’t like seeing “2” up there if somebody just wrote me “hi” and then “how are you?”.

There is still a major problem with the extension. I wanted to be able to also see if somebody pinged me on IRC (I’m a XChat-GNOME user) so I don’t limit the count to active chat conversations, but I consider all the active notifications. I find this very useful to avoid missing something, but it means that the red icon will also appear every time banshee or rhythmbox change song. Suggestions on how to solve this?

Changing completely topic, I recently moved to a new home and, having a nice new kitchen (with dishwasher), I started cooking a lot again. I decided to start a new cooking blog called gnocchialpesto.co.uk to keep track of my recipes and share them with others. If you like food, in particular Italian one, take a look at it :).

Permanent IM notifications

Update: the extension is now available on extensions.gnome.org.

Gnome 3 and the shell look really great, but there are a few things that annoy me. My main complaint is that I keep missing IM messages because there is no visual clue that you got a message (unless you are staring at the bottom of your screen exactly when you receive something).
This problem will probably be fixed in the next version of Gnome, see bug #641723, but I wanted something now. That’s why I wrote a simple extension that just displays the number of conversations with unread messages. To install it, just clone the git repository and execute “make install”.

Spot the difference
Spot the difference

The extension is unpolished, it does very little, the code is horrible and I didn’t pay any attention to usability; I just wanted a quick fix while waiting for upstream to fix the bug properly. Nevertheless, I hope this code will be useful for other people too!

Broken GTalk calls

Recently Google updated their XMPP servers to use standard Jingle for audio and video calls; see the “Google: The Future is Jingle” post on xmpp.org for some more details.
This would be good news for us, except that, by doing so, they broke calls in telepathy-gabble (so in Empathy, the N900 and MeeGo) in multiple ways.

Luckily GTalk developers were really cooperative and they agreed on fixing their servers and Will and Olivier already fixed Gabble too. The new version of Gabble (0.12.2 for the stable branch and 0.13.1 for the development one) should make calls work again on the desktop, MeeGo and on Harmattan (i.e. the N9 and N950) too.
For the N900 we don’t have any way to release updates, but Google will push an update to their servers (in the next week or two hopefully) with a N900-specific workaround.

Sadly video calls on the N900 will keep not working; the version of gst-dsp on the N900 doesn’t properly handle changes in the parameters of the stream :(.

Update: just to be clear, this affects only calls from GTalk to gabble. Calls in the other direction still work and calls between two devices of Gabble work too.

Folks and QtContacts

At the moment I’m at the MeeGo conference in Dublin, finally finding a bit of time to blog on what I have been working on for the past 2 weeks. The conference is really well organised and the location is a bit unusual but awesome. For me, the best thing about this conference seems to be the possibility of meeting so many people that I know because of GNOME, Collabora and Maemo/MeeGo. Considering that Collabora is now employing several KDE people, this conference is also a good way to meet more KDE developers while awaiting for the Desktop Summit in Berlin.


The Aviva stadium

Nowadays, Empathy uses libfolks to access contacts and to merge multiple contacts (called personas in Folks) into a single “meta-contact” (called individual).
On MeeGo, on the other hand, it seems that QtContacts (part of QtMobility) is the future. QtContacts is just an API and relies on backends for the actual access to contacts, so why not trying to have QtContacts using libfolks? In the last weeks I worked a bit on writing a QtFolks backed for QtContacts and a small demo written in QML to show what the backend can do.

The demo showing some of my XMPP contacts
The demo showing some of my XMPP contacts

Folks doesn’t just want to be a library for IM contacts, but a generic library to access all of your contacts. The next logical step was to add extra backends to access more sources of contacts.
If you use the Facebook XMPP server, you can already have access to Facebook friends and chat with them, but you don’t get all the information that are available through the web API. This is why I modified the Facebook libsocialweb plugin to also access Facebook contacts and added new interfaces to libfolks to expose this information. Moreover, we can rely of the Facebook ID to automatically merge the persona from the Facebook XMPP and the one from the Facebook web API into a single individual.

A contact with multiple IM addresses and information coming from Facebook too
A contact with multiple IM addresses and information coming from Facebook too

Feature complete custom ringtones

I finally released a version of “Custom ringtones for your contacts” that implements every basic feature I wanted to have for a first stable version, so I think it deserves being called 1.0 :).
Apart from some bug fixes, this new version is translatable and allow you to set a ringtone for callers with a hidden phone number and for contacts not in your address book. The new settings are available from the address book settings dialog.

The settings dialog with the extra ringtone buttons
The settings dialog with the extra ringtone buttons

For now there is only an Italian translation, but any help to get more is appreciated. Don’t worry, there are just 8 strings to translate!
To propose a new translation just go to the Transifex component page, download the .pot source file, add the translations to it, login to Transifex, and upload the file by pressing “Add a new translation” and setting as target file “po/XX.po” (where “XX” it the language code, for instance “fi” for Finnish, “de” for German, etc.). If you don’t know how to use gettext translation files I suggest using Poedit or gtranslator.

The custom ringtones application is now available both from extras-testing and from my personal repository:

Install per-contact-ringtones
Install from my personal repository
(follow the link on the N900 browser)

Update: I released version 1.0.1 containing some new translations: German (by NightShift79), French (by Alban Crequy), Brazilian Portuguese (by Humberto Sgrott Reis) and Swedish (by Andreas Henriksson). I will add more when I receive more.

Update 2: I released version 1.0.2 containing a crasher fix and some new translations: Albanian (by Ilir Gjika), Dutch (by Daniel Holsboer) and Spanish (by Fernando Borrego Polo).

Update 3: I released version 1.0.3 containing some new translations: Russian (by Misha Ketslah), Norwegian (by Stian Husemoen), Korean (by KwangHee Cho), Czech (by Pavel Fric), Hungrarian (by Balázs Bárány) and Romanian (by Bogdan Vernescu).

Ringtoned 0.2.4 (now with vibration!)

I just released ringtoned 0.2.4 with a fix to make the N900 able to vibrate again when a call is received.
Ringtoned (displayed in the application manager as “Custom ringtones for your contacts”) is available from extras-devel (that contains a lot of other unstable software!) or from my personal repository:

Install per-contact-ringtones
Install from my personal repository
(follow the link on the N900 browser)

This release fixes the last major reproducible bugs, but I’m sure there are more. If you find any please report them in the bugzilla explaining clearly what you are doing, what you would expect to happen and what happens instead. A log attached to the bugzilla entry is very useful to understand what is going on, and can be easily created by opening a terminal and giving this command:

ringtonedctl -d stop startwait > /home/user/MyDocs/ringtoned.log 2>&1

Then attach the ringtoned.log file that is in your documents directory to the bug report.

Ringtoned 0.2.1

The Fremantle daemon that decodes ringtones seems to have a bug that, in some cases, makes it produce wave files with an invalid size in them. These files cannot be played by libcanberra, so it meant that some ringtones couldn’t be played when you receive a phone call. I just released ringtoned 0.2.1 with a work around for the bug, please let me know if this version works better for you.

Anyway, I got a new component in the Meamo Bugzilla for ringtoned, so please report bugs there.

Update 2: I released ringtoned 0.2.2 that just adds some more debugging info to make my life easier.