_

Skype API Protocol Plugin for Pidgin / libpurple

 - disper
 - tirp


Valid HTML 4.0!
Valid CSS!
Viewable with ANY browser!

This project is superseded by another, please look at the Skype API plugin for another, more mature project.


You can find here a protocol plugin for Pidgin that adds basic functionality for Skype using it's API. It's currently being developed (since September, 2007). Read on for the background, skip to the plugin to get started.

Motivation

Yeah, I know, Skype is not free software. It doesn't cost any money, ok, but you can't look under the hood or modify it. I tried other VOIP systems: Ekiga with a corresponding account, Wengophone, and probabely some more. But one didn't work at all, another had problems with firewalls, and if I succeeded in connecting at all, the quality was terrible. So that leaved Skype as the only option. Too bad, although I'm pretty glad that there is at least an option for internet calling that just works(tm).

And Skype developers aren't that bad either, they want to create an open platform for internet telephony, but had to work around the troubles of masquerading firewalls. To prevent peer2peer abuse, some part had to be closed. Too bad the GUI isn't open though, but I've seen signs of a non-gui client in - where did I see it again - OpenMoko? Anyway, I just want to talk to my friends and be able to use just a single application for chatting and online presence. So the logical step would be to write a protocol plugin for Pidgin (formerly GAIM).

Pidgin developer documentation is scarce, just writing a plugin appeared to be less trivial than I had hoped for. After a first version that worked but was very ugly, I restarted from scratch to create a version that isn't repelling to look at; true code has beauty.

The plugin

The current plugin has the following features:

  • Buddylist - see who's online and their status
  • Synchronization&management of buddylist - add/remove users and keep them synchronized with Skype
  • Get info - see information about people in your buddylist
  • Status - set your status (duh) [note that Skype's tray icon doesn't update; you friends will see the change though]
  • Multiple connection methods - a simple internal API for different connection methods (conn). Currently, only the X message connection method is implemented, stubs for dbus are in place (though dbus doesn't work for my Skype :( ).
  • Callback system - for registering commands and responses to handle Skype messages asynchronously with relative ease. Asynchronous communication is required when X messages are used (conn_x).
  • Autoconf+automake

The current version was only tested with Pidgin, anything else will probabely break since only the X messages connection method is implemented now and that requires an existing gdk event loop. This needs improvement, of course. I'll look into that later, when there is a more functional plugin. An alternative would be dbus.

This release may not be suitable for end-users yet.

That said, here it is:

  • pidgin-skypeapi-0.0.2, source package
    run ./autogen.sh, then ./configure and make from it's dir and, with the correct dependencies installed, you should have a plugin. I haven't tried make install yet, but you'll find your way. src/.libs/libskypeapi.so is what you want.

I hope it'll eventually make a good addition to Pidgin and the Linux desktop in general :)

p.s. I should work on my line-length code-style, sorry for that. It's time to read Pidgin's manual of style, would there be one?


Usage

This section refers to functionality that isn't available yet. It does contain useful information though on how we should handle chat messages and interaction with Skype.

Ok, now you have installed it, how can it be used? Add a new SkypeAPI account and enter your Skype username. When you have logged in, your buddies should appear in group "Buddies". Double-clicking on it will open a chat window; right-clicking should also give the option to open Skype's chat window, and to start a call.

Default settings are such that incoming chat messages are not processed by Pidgin, you should chat with Skype instead. To chat using Pidgin, you should do a couple of things:

  1. Enable the checkbox "Handle chat messages" on the advanced account options of the SkypeAPI account in Pidgin.
  2. Select "Display an event notification" in the chat options in Skype.
  3. Deselect "Display pop-up notification" in the notification options in Skype for chat-related notifications.

These options are not accessible using the Skype API and must be set using the Skype program, that's why this is not the default. Note that when you have received a message, Skype will have a pending event for that (blinking flag). It is currently not possible to avoid this (other than using silent mode, but I'm not yet prepared to do so).