Table of Contents
- Welcome
- GNOME Presence Applet
- Internationalization Support
- New Bulgarian Translator
- Display Name Support
- New Features
- Bug Fixes
- Open Bugs
- TODO / Help Wanted
- Contact Information
1. Welcome
Hello again. This week's status report is slightly on the late side, but not by much. Personal life and work stuff, you see. It's been a good week though. The GNOME Presence Applet is now in a working state, unlike last week, and we have a new Bulgarian translator. And of course, many bug fixes and feature enhancements.
2. GNOME Presence Applet
In last week's report, I introduced the new GNOME Presence Applet. At that point, the applet was barely functional, and had many things hard-coded in. Now, it's a useful tool that can be used and easily configured.
In some cases, the GNOME Presence Applet is a useful buddy list substitute. Rather than keeping a list of all contacts, you can quickly see the statuses of a select few by opening up a drop-down menu.
GNOME Presence Applet on a GNOME panel

The presence menu showing monitored accounts
Parts are still a bit buggy, but it's in a mostly working state. Future versions will allow for the adding of people rather than or maybe alongside accounts, so that status for any of a person's accounts can be monitored and displayed.
3. Internationalization Support
This week, work has been done to provide internationalization (i18n) support for Galago through gettext. Currently, gaim-galago, libgalago, and gnome-presence-applet now have i18n support. Other modules will in time move to this as well.
Common strings, such as service and status names, are now stored in libgalago and translated automatically. This takes the burden of translating off of every project using libgalago.
At this stage, we are looking for translators. The work required is currently minimal, though it will increase in time as the project grows.
4. New Bulgarian Translator
I would like to welcome our new Bulgarian Translator, Milen Dzhumerov, to the project. He contacted me at the beginning of this week, eager to get to work. He will be given his first tasks probably within the week, and added to the Contact Information page. Thanks Milen.
5. Display Name Support
Display name support was introduced this week. This is a special name assigned to an account through a feed that provides an alternative name for the account for display purposes. For Gaim users, this is essentially a buddy alias.
It will probably be better in the future, when the support is added, to use the person's name instead of a display name. This depends on the application, of course, but representing people instead of people's accounts when possible is usually ideal. That said, display names are useful when displaying the account name, though developers should think clearly before deciding which to use.
Display names are retrieved using the new galago_account_get_display_name() function. If no feed set the display name, this function will return the username instead. Because of that, this function is always safe to call, and is guaranteed to return a represenation of the account's name. However, if you wish to check if a custom display name has been set for an account, use galago_account_is_display_name_set().
6. New Features
libgalago
- Added display name support (Gaim buddy aliases and stuff), and the functions
galago_account_set_display_name(),galago_account_get_display_name(), andgalago_account_is_display_name_set(). - Added
galago_is_registered(). - Handle a couple of D-BUS error messages.
- Added functions for determining if a status or a presence is considered "available:"
galago_status_is_available()andgalago_presence_is_available(). - Added #defines for common status IDs ("away," "available," etc.) and service IDs ("aim," "jabber," etc.).
- Improved
galago_service_newandgalago_status_newto automatically use the translated service and status name if the ID is known. - Added gettext i18n support.
- If we receive the org.freedesktop.DBus.Error.ServiceDoesNotExist D-BUS error, attempt to re-active the daemon. If this fails, just stay unregistered until we get a ServiceCreated again.
galago-daemon
- Added support for display names.
- Remove the deprecated get-presence-graph tool.
- Remove the deprecated
Core.QueryPresencesandCore.GetDotGraphmessage handlers.
libgalago-gtk
- Use the display name on the
GalagoGtkAccountMenuItem,GalagoGtkPresenceIcon, andGalagoGtkPresenceLabelwidgets instead of the account username. - Use
GalagoGtkPresenceLabelinGalagoGtkPresenceMenuItemso that we can display idle times and dim the entry without doing any extra work. - Added functions to
GalagoGtkPresenceLabelandGalagoGtkPresenceMenuItemfor setting whether or not to show idle times and dim the entry on idle.
gaim-galago
- Set the display name for buddies' accounts based on the user-specified alias or the server-side alias.
- Use the new service ID and status ID definitions for consistency.
- Remove the service ID to Name table that felt like an ugly hack.
- Translate "prpl-gg" to "gadugadu" instead of "gg," to be consistent with the new service IDs.
gnome-presence-applet
- Added debug info that displays when we can't add GConf directories.
- Hooked up the "Show idle times" and "Dim idle accounts" preference checkboxes to GConf.
- Enable compiler warnings by default.
- Accounts can now be removed from the list of monitored accounts.
- Added account re-ordering, through the Up/Down buttons and drag-and-drop.
- The active account is no longer hidden in the drop-down menu.
- Disable the Move Down button if the selected account is the last one, and disable the Move Up button if it's the first.
- Hook up the
dim_idleandshow_idle_timesproperties on the menu items and presence label when the GConf values for them changes. - Finished gettext i18n support.
- Build the menu once when the applet loads, and destroy it when unloading. The presence menu will now update itself when accounts' presences change. This also reduces a lot of D-BUS chatter, and fixes a segfault.
7. Bug Fixes
libgalago
- Allow applications to once again receive the
ServiceCreated/ServiceDeletedmessages, so that they can re-register or discard data when the daemon goes up or down. - Properly initialize libgalago even if the daemon is down at the time.
- [#968086] Prevent run-time warnings about duplicate statuses being added when receiving a
Presence.StatusAddedD-BUS message. - Don't try to unregister from galago-daemon if we're not even registered in the first place.
- Don't make registering with galago-daemon a prerequisite to initializing successfully, as we can always register later when the daemon goes back up.
- [#974417] Receiving an
Account.SetConnectedmessage after anAddStatusorSetIdlewill no longer override the idle time or status we just received.
libgalago-gtk
- Unregister our property watches in
GalagoGtkAccountMenuItem,GalagoGtkPresenceIcon,GalagoGtkPresenceLabel, andGalagoGtkPresenceMenuItemwhen we destroy the widgets or at other times, so that we don't cause a crash when destroying the widgets.
gaim-galago
- Fixed a call to a wrong function name that was preventing gaim-galago from being loaded in Gaim properly.
gnome-presence-applet
- Fix the output filename for the GConf schemas file.
- The list of monitored accounts is saved correctly now.
- Remove the GConf notifications from the preferences dialog when we destroy the dialog, so that we don't crash.
- Fix an infinite loop problem that occurred sometimes when right-clicking the menu or opening the preferences window, closing it, and waiting for a short period of time.
- Re-worked part of the preferences dialog UI to fix several little glitches and inconsistencies.
8. Open Bugs
- [#974403] Full message queue and lock up
- [#968090] Confusion regarding presence state
- [#955126] Signals being emitted prematurely
9. TODO / Help Wanted
There are many tasks in Galago that would speed up the initial release and provide desktop integration. If you would like to take on any of these tasks, contact us.
- Beta-test Galago and submit bug reports and/or patches.
- Integrate Galago into other programs (instant messengers, video conferencing software, e-mail clients, etc.). Good starts would be Kopete, CenterICQ, Mutt, and GnomeMeeting.
- Create Python, Ruby, C++, Obj-C, etc. wrappers for libgalago and libgalago-gtk.
- Create Qt widgets for use with Galago.
- Documentation and language translation.
10. Contact Information
People interested in helping out with Galago in some form, or those who are just curious about it may join #Galago on irc.freenode.net. We also have listservs set up for development discussion and SVN commits. See our Mailing Lists page for subscription information.
If you wish to contact me (Christian Hammond) directly, please see the Contact Information page.
Posted by chipx86