我想弄清楚如何与pidgin一起使用dbus
问题描述:
我的问题是我不知道如何连接它们。我是否需要以特定方式安装pidgin才能使dbus与其进行交互?如果没有,那么pidgin gui必须运行才能让dbus使用它?我想弄清楚如何与pidgin一起使用dbus
答
按this源,你可以做到以下几点:
#!/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()
也许你可以开始使用这种领先优势。
答
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")
然后你可以使用紫色对象调用一些像这样的方法:当入门使用DBUS接口与洋泾浜是D-Feet
status = purple.PurpleSavedstatusNew("", current)
purple.PurpleSavedstatusSetMessage(status, message)
purple.PurpleSavedstatusActivate(status)
答
一个真正有用的工具来使用。您可以看到所有可用的方法,甚至可以直接从GUI执行它们。
答
下面的代码提供了一个隐藏好友列表的示例,以及与特定联系人开始IM对话的另一个示例。
import dbus
BUS_ARGS = ('im.pidgin.purple.PurpleService', '/im/pidgin/purple/PurpleObject')
obj = dbus.SessionBus().get_object(*BUS_ARGS)
purple = dbus.Interface(obj, 'im.pidgin.purple.PurpleInterface')
# show buddy list if it is hidden
purple.PurpleBlistSetVisible(1)
# start IM conversation with specific contact
account = purple.PurpleAccountsFindConnected('', '')
conversation = purple.PurpleConversationNew(1, account, '[email protected]')
我可以推荐一些有关使用DBUS与洋泾浜有用的资源:
- Riding the D-Bus with Pidgin - 有三个独立的蟒蛇DBUS例子。
- purple-remote - 这是一个python脚本,安装在我的ubuntu机器上时,我安装了pidgin。它是一个单独的文件,很容易阅读。
- dbus-monitor - 监控dbus呼叫的好程序。它可以帮助您发现当您找不到记录的程序时正在使用的程序正在使用哪些呼叫。
- qdbusviewer - 伟大的图形工具,可以列出pidgins dbus方法。您也可以从工具本身调用它们。
Upvoted的提d英尺。似乎是一个非常好的dbus调试器工具。 – abbot 2009-10-19 14:38:57