tags:

views:

296

answers:

4

My problem is I'm not sure how to interface them. Do I need to have pidgin installed in a particular way in order for dbus to interface with it? and if not does the pidgin gui have to be running in order for dbus to utilize it?

+3  A: 

As per this source you could do the following :

#!/usr/bin/env python

def cb_func(account, rec, message):
    #change message here somehow? 
    print message

import dbus, gobject
from dbus.mainloop.glib import DBusGMainLoop
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()

bus.add_signal_receiver(cb_func,
dbus_interface="im.pidgin.purple.PurpleInterface",
signal_name="SendingImMsg")

loop = gobject.MainLoop()
loop.run()

Probably you can get started with this lead.

Kevin Boyd
+2  A: 
import dbus
from dbus.mainloop.glib import DBusGMainLoop

main_loop = DBusGMainLoop()
session_bus = dbus.SessionBus(mainloop = main_loop)
obj = session_bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")

Then you can use the purple object to call some methods like this:

status = purple.PurpleSavedstatusNew("", current)
purple.PurpleSavedstatusSetMessage(status, message)
purple.PurpleSavedstatusActivate(status)
markuz
+1  A: 

A really useful tool to use when getting started with using DBUS to interface with Pidgin is D-Feet. You can see all the available methods you can call and even execute them directly from the GUI.

Tim Kryger
Upvoted for mentioning D-Feet. Seems to be a really nice dbus debugger tool.
abbot
A: 

You do not need to do any special configuration of Pidgin to use D-Bus, however it must be running if you want to use it. You can check the script I'm using to control Pidgin status from the NetworkManager-dispatcher (part 1, part 2) as a sample how to interface Pidgin via D-Bus from python.

abbot