【问题标题】:I'm trying to figure out how to use dbus with pidgin我试图弄清楚如何将 dbus 与 pidgin 一起使用
【发布时间】:2010-11-19 11:30:40
【问题描述】:

我的问题是我不确定如何连接它们。我是否需要以特定方式安装 pidgin 以便 dbus 与之交互?如果不是,是否必须运行 pidgin gui 才能让 dbus 使用它?

【问题讨论】:

    标签: python dbus


    【解决方案1】:

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

    或许您可以从这条线索开始。

    【讨论】:

      【解决方案2】:
      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)
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 因提到 D-Feet 而被投票赞成。似乎是一个非常好的 dbus 调试器工具。
        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2020-08-27
            • 1970-01-01
            • 2023-03-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多