我在尝试如何在pidgin中使用dbus

4 投票
5 回答
2227 浏览
提问于 2025-04-15 13:35

我的问题是,我不太确定怎么让它们互相连接。我需要以某种特定的方式安装pidgin,才能让dbus和它对接吗?如果不需要的话,pidgin的图形界面必须要运行着,才能让dbus使用它吗?

5 个回答

2

当你刚开始使用DBUS与Pidgin进行交互时,一个非常有用的工具是D-Feet。这个工具可以让你看到所有可以调用的方法,甚至可以直接在图形界面上执行这些方法。

4
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")
status = purple.PurpleSavedstatusNew("", current)
purple.PurpleSavedstatusSetMessage(status, message)
purple.PurpleSavedstatusActivate(status)

然后你可以用这个紫色的对象来调用一些方法,像这样:

5

根据这个来源,你可以尝试以下方法:

#!/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()

可能你可以从这个线索开始入手。

撰写回答