我正在试图找出如何使用带有pidgin的dbus

时间:2009-08-13 22:01:29

标签: python dbus

我的问题是我不确定如何界面。我是否需要以特定方式安装pidgin才能使dbus与之接口?如果不是,为了让dbus使用pidgin gui必须运行它?

5 个答案:

答案 0 :(得分:5)

根据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()

可能你可以开始使用这个线索。

答案 1 :(得分: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)

答案 2 :(得分:2)

在开始使用DBUS与Pidgin交互时使用的一个非常有用的工具是D-Feet。您可以看到可以调用的所有可用方法,甚至可以直接从GUI执行它们。

答案 3 :(得分:2)

下面的代码中有一个示例显示隐藏的好友列表以及与特定联系人开始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, 'alice@example.com')

我可以推荐一些与使用带有pidgin的dbus相关的有用资源:

  • Riding the D-Bus with Pidgin - 有三个单独的python dbus示例。
  • purple-remote - 当我安装pidgin时,它是安装在我的ubuntu机器上的python脚本。它是一个单独的文件,非常容易阅读。
  • dbus-monitor - 监控dbus呼叫的好程序。它可以帮助您发现当您找不到文档时使用的程序正在使用的调用。
  • qdbusviewer - 可以列出pidgins dbus方法的出色图形工具。您也可以从工具本身调用它们。

qdbusviewer

答案 4 :(得分:0)

您不需要对Pidgin进行任何特殊配置即可使用D-Bus,但如果您想使用它,它必须正在运行。您可以从NetworkManager-dispatcher(part 1part 2)检查我用来控制Pidgin状态的脚本,作为如何通过Dthon总线从python接口Pidgin的示例。