问题标签 [dbus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
766 浏览

qt - 带有 QString 的 Qt 调用方法

我有一个运行在 DBus 上的守护进程,它提供启动应用程序的服务。我想将两个字符串传递给此服务 API(appPath、appArgs)。我已经用 DBus 注册了服务和对象路径。

我的服务方法被调用,但我没有在我的服务中正确接收参数()。这就是我从我的适配器类中做的事情,

这就是我的界面的样子。

我如何实现这一目标?

0 投票
4 回答
1307 浏览

python - 寻找有关如何为 Gnome / Ubuntu 开发小程序的建议

我是一个 linux(主要是 ubuntu)用户,对系统的工作原理有合理的理解(尽管我当然不是linux 专家!)。过去,我在 python/GTK 中开发了小型跨平台桌面应用程序,并将它们作为独立的文件树交付给客户端,因此唯一的依赖项是 Python 本身和 GTK。

现在我想为 ubuntu 开发一个小程序,我想在 GPL 2 或 3 下发布。

特别是这些是我知道我必须学习以实现我的目标的新步骤(很可能还有一些我不知道的步骤!):

  • 与 gnome 集成:我希望我的应用程序可以作为小程序在任务栏中使用。
  • 使用 D-bus:特别是我希望我的小程序使用 ubuntu 的新 osd-notification 框架,但与其他小程序的通信也是第二次迭代的可能功能。
  • 打包:一旦应用程序达到 alpha 阶段,我想设置一个公共 PPA,但我也想使用官方 repos 中现有包的依赖项,而不是在我自己的包中再次包含库。

当然,官方文档将是我的第一个知识来源,但是 - 基于我在 SO 上收到的关于另一个主题的非常有用的答案的判断- 我决定求助于 SO 社区以收集其他建议,例如:

  1. 除了我之前概述的步骤之外,是否还有其他步骤,我必须学习才能实施我的项目?
  2. 根据您自己的经验,您是否会建议我提前学习这些步骤(因为这些知识会影响我编写核心功能的方式),或者您是否会将与 gnome / d-bus 和打包的集成视为“更高的封装级别" 之后可以添加到核心功能之上(注意:D-bus 将首先用于推送数据。输入数据将通过 web 服务检索)?
  3. 你会建议我将我的应用程序分成两个包(后端和前端)还是将它放在一个包中?
  4. 你知道有什么有用的资源可以建议我看一下,以学习我必须学习的任何东西吗?
  5. 您是否知道我应该注意的任何常见的“初学者错误”?

但是,这些问题并不详尽:如果您觉得我在总体情况中遗漏了一些东西,我们非常欢迎您指出我正确的方向!

PS:如果我无法解释我的最终目标,请看一下项目仓鼠:我想要实现的用户界面类似(意思是:小程序应该显示状态并单击它应该打开应用程序本身,您可以从中配置小程序并执行各种操作)。

0 投票
3 回答
2046 浏览

python - Linux USB 映射问题

我正在开发一个实用程序,该实用程序将在 linux 上自动安装插入的 USB 记忆棒。我已经绑定到 D-Bus 以接收有关何时插入设备的通知,并且效果很好。但是,我需要确定 /dev 中的哪个设备映射到插入的 USB 记忆棒。我收到 D-Bus 通知,然后使用 pyUSB ( 0.4 ) 扫描 USB 系统。我过滤了 USB_MASS_STORAGE_DEVICE 类,我可以看到已添加或删除的设备。我需要安装此设备,以便查询它的可用空间并将其报告给我们的应用程序,以便我们确定是否存在足够的可用空间,以便我们可以写入数据。

我正在使用 python 来完成这项任务。我不确定我们的目标发行版是什么,只是它至少是 2.6

编辑:我的问题是:如何确定 /dev 中的哪个设备映射到我从 pyUSB 获得的总线设备号。

0 投票
2 回答
740 浏览

python - DBus-Cherrypy 合并问题

我正在使用 python-dbus 和 cherrypy 来监控 USB 设备并提供 REST 服务来维护插入的 USB 设备的状态。我已经独立编写和调试了这些服务,并且它们按预期工作。

现在,我将这些服务合并到一个应用程序中。我的问题是:我似乎无法同时启动两个服务(cherrypy 和 dbus)。一个或另一个阻塞或超出范围,或未初始化。

我尝试将每个封装在自己的线程中,然后对它们调用 start 。这有一些奇怪的问题。

运行此代码时,cherrypy 代码不会完全初始化。当插入 USB 设备时,cherrypy 继续初始化(好像线程以某种方式链接),但不起作用(不提供数据甚至在端口上建立连接)我查看了 cherrypys wiki 页面但是还没有找到一种启动cherrypy的方法,它可以初始化并返回,所以我可以初始化DBus的东西并能够把它拿出来。

我的最终问题是:有没有办法让cherrypy开始而不是阻塞但继续工作?我想摆脱这个例子中的线程并在主线程中初始化cherrypy和dbus。

0 投票
1 回答
1877 浏览

linux - D-Bus 线程模型

我开始使用D-Bus作为 Linux/KDE 中新项目的 IPC 机制。而且我发现文档并没有真正解决并发问题。D-Bus 服务如何处理来自不同客户端的多个并发调用?什么是线程模型?服务可以假设它是单线程的并且 D-Bus 会自行排队请求吗?

0 投票
2 回答
1066 浏览

api - 如何找出无线认证方式?

我正在尝试通过 DBUS API(在 Linux 中)在所有可用的接入点上获取身份验证模式(WPA/WEP)。NetworkManager API描述了一个属性 WPAFLAGS 但我没有得到任何东西(我每次都得到 Null Flag)。D-Feet DBUS 调试器也不显示任何东西。我错过了什么,还是 API 坏了?

0 投票
1 回答
1780 浏览

python - 从 Totem 应用程序获取当前时间点

我想在使用 D-Bus 的正在运行的 Totem 实例中找到媒体文件当前暂停(或播放)的确切时间。准确地说,我想要的可以通过以下命令从 Totem python 控制台(如果插件存在并启用)中获得:

我的理解是毫秒。

到目前为止:我以前从未使用过 D-Bus,所以我正在阅读 D-Bus 和 python-dbus 文档。我也启动了 D-Feet,发现org.gnome.Totem总线名称和/Factory对象我可以使用org.freedesktop.DBus.Properties接口方法。

我目前在这一点上:

我什至找不到合适的方法,所以任何帮助都将不胜感激。

0 投票
1 回答
3083 浏览

c - DBus Glib 发送信号 - 没有发出信号

我正在尝试通过会话消息总线发送信号。我可以毫无问题地使用 d-feet dbus 调试器调用方法。不幸的是,d-feet 不允许您连接到信号来调试它们。作为替代,我dbus-monitor "type='signal'"用来查看是否发送了任何东西。到目前为止,除了我发送的任何内容外,这都有效。

我的假设是,当调用dbus_g_connection_register_g_object (connection, path, object);它时,它会注册位于您的自省 xml 文件中的所有方法、属性和信号。这似乎是正确的,因为在我添加它们之前,dbus 会抱怨信号不存在。

我尝试使用g_signal_emit_by_name(self,"application_identifier_changed","some new crazy aid",NULL);. 这在应用程序本身内起作用,我可以连接到信号并触发。然而,在 dbus 监视器中什么也没有出现。我一定错过了一些简单的东西。

以下是涉及的文件:
main.c

powerview-application-presence.gob:

powerview-application-presence-instance.xml

项目压缩包:https ://www.slello.com/tmp/PowerviewTestApp.tar.gz

我将不胜感激任何帮助。

0 投票
1 回答
2363 浏览

python - Python DBus 中异步方法的实现

如何在 Python DBus 中实现异步方法?下面的一个例子:

我正在使用 Twisted 的 glib2 反应器。

更新:我知道这种行为是可以实现的——DBus 包括一个“串行”(唯一标识符)到方法调用,并且被调用的方法可以访问这个标识符,以便将“调用”与“回复”匹配。

0 投票
1 回答
3833 浏览

python - Python DBUS SESSION_BUS - X11 依赖

我已经运行了在 Ubuntu 桌面上很好的示例 python 代码:

在桌面上成功后,我将代码移至仅带有 shell 的服务器版本。dbus-launch 启动进程,但 python dbus.SessionBus() 返回错误,“/bin/dbus-launch 异常终止并出现以下错误:自动启动错误:X11 初始化失败”。

希望当进程以“dbus-launch”启动并成功运行时,SESSION_BUS 和 X11 之间不应该存在严格的依赖关系。错误来自python。

最好的解决方案是干净的 python 或 linux 环境设置,最差但可能可以接受一些假的或虚拟的 X11(我尝试的时候并不幸运)