问题标签 [qdbus]

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 投票
2 回答
609 浏览

bash - 启动后将 pid 映射到 qdbus 服务号

我正在尝试编写一个 bash 脚本,它将启动一个程序(konsole)并向它发送 dbus 消息。这是我的实验

这输出

qdbus 服务名称始终是org.kde.konsole-{pid+epsilon},但 epsilon 部分是不可预测的。

在我的 bash 脚本中,如何获得我刚刚生成的特定 konsole 实例的确切 qdbus 服务名称?


这是一个讨厌的,hacky的解决方案

但肯定有更好的方法!

0 投票
1 回答
1866 浏览

c++ - QDbus:服务调用返回 QList

我在从应该返回整数数组的服务调用中检索值时遇到了困难。接口xml文件中的方法调用定义为:

qdbusxml2cpp 生成以下方法:

我还添加了

在生成的 .h 文件的顶部。在 main.cpp 中,我进行了以下调用

当我启动程序时,我可以从启用的调试输出中看到我得到了结果,如下所示,但是 qDebug() 行打印 0。我不知道如何正确检索结果。

我错过了什么?任何帮助将不胜感激。

0 投票
1 回答
956 浏览

python - 如何断开 python DBus 连接?

我为 pidgin 客户端制作了某种应答机,它使用 Linuxes DBus 与 pidgin 建立连接。代码是这样的:

现在我想将它用作另一个程序中的模块。我这样称呼它:

问题是,当我停止第二个程序(将这个程序作为模块的程序)然后再次启动它时,我会得到一个segmentation fault,因为它想与 DBus 建立另一个连接,而且它接缝不规则!

否则我想给用户禁用这个模块的机会。我试着用一个if语句。它将第一次工作。但是如果用户运行该模块一次,他就不能再禁用它了。

0 投票
1 回答
1431 浏览

c++ - QT-Dbus 信号/插槽?

如何连接我的 QT 插槽以响应某些 3rd 方服务生成的 D-BUS 信号?

以下是对的吗?

0 投票
1 回答
2467 浏览

qt - qdbus 和自定义类型的编组

我想通过 Qt DBUS API 发送一个自定义 C++ 类。我已经使用 protoc 编译器从 .proto 文件创建了类,并将它们添加到我在 QtCreator 中的项目中。现在我想验证我是否可以通过 dbus API 将自定义类作为 QVariant 发送。我有一个接收器和发送器程序,可以发送一个简单的测试字符串,以便 Dbus 工作。将协议缓冲区类添加为元类型后,我无法发送它。

我的测试 .proto 文件只包含整数:

在我添加的协议缓冲区类头文件中:

在我添加的协议缓冲区类实现文件中:

主要看起来像这样:

我的 dbussender 类调用远程函数是这样的:

最终在我的接收程序中,这个函数被调用但总是返回 0:

这是 Sender 程序的输出:

这是 Receiver 程序的输出:

为什么编组函数似乎被调用了两次?为什么第二次调用似乎包含我的协议缓冲区的 3 个属性的有效值 2、3、4,但第一次调用全是 0?接收器似乎只看到全 0 并且从不接收具有有效值的协议缓冲区对象。

我的编组代码有问题吗?还有什么可能发生的?

0 投票
1 回答
917 浏览

dbus - 使用 qdbus 连接到信号

qdbus调用方法时相当简单,但是可以用它连接到信号吗?签名:

0 投票
0 回答
1734 浏览

c++ - Qt QDbus 使用 QVariant 发送自定义类型

我正在尝试通过 Qt 中的 Dbus 会话总线在 2 个简单应用程序之间的 QVariant 内发送自定义类(“Span”)。Span 是一个包含 2 个双精度类型属性的简单类。我已经成功地通过 dbus 接口发送并恢复了一个仅包含 QString 的 QVariant,就像我在下面尝试使用自定义类的 QVariant 一样。

Span 在类头文件中包含以下 QMETATYPE QVariant 注册声明:

我有 2 个测试应用程序,一个发送者和一个接收者 - 两者都具有完全相同的“跨度”类定义。在我的发件人应用程序中,我这样做:

'setSetting' 方法定义为:

在接收器中,我像这样注册“跨度”类:

然后我尝试像这样恢复 Span 类:

上面的代码给了我 Span 类属性的虚假值:

我究竟做错了什么?我可以在 Sender 应用程序中对 Span 实例进行编码和解码,但是一旦接收器类通过 dbus 获取它,我就会得到虚假值。我真的很感激任何想法/帮助!

注意:我确实在我的 Span 类中实现了流式操作符,如下所示(接收方和发送方应用程序中都存在相同的类实现):

0 投票
1 回答
249 浏览

dbus - 服务器和客户端中不同的 Dbus 绑定

我正在尝试实现 Dbus 客户端。Dbus 服务器实际上是由第三方实现的,我不知道它使用什么绑定(但我猜是 gdbus)。现在我可以在我的客户端应用程序中使用 QDbus 绑定,而不管 Dbus 服务器中使用什么绑定吗?如果是这样,如何在服务器(例如 glib 类型)和客户端(例如 qt 类型)之间管理数据类型(wrt 复杂数据类型/用户定义的结构)?对此概念的解释将不胜感激。

0 投票
0 回答
162 浏览

dbus - DBus 按需对象创建

因此,DBus .service 机制允许 DBus 在请求的服务未运行时启动进程。我正在寻找类似的东西,但寻找对象。

如果我有可用的 Object_0 到 Object_9,但只想按需为 DBus 注册它们,即当有人请求对象时。路径将是已知的,因此我基本上是在寻找一种方法来“捕获”未注册的错误并在运行时动态添加对象(或提供错误,例如 Object_11 被要求) .

有推荐的方法吗?我必须认为它以前做过,但我什么也没找到。

0 投票
3 回答
2528 浏览

lua - 在 lua io.popen 中使用 stderr 来确定错误的函数调用

我正在制作一个函数,可以读取在 Spotify 中播放的当前歌曲的元数据。这是在 lua 中编程的,因为它是一个很棒的 wm 的实现。我得到以下行来获取我以后可以使用的所有元数据。

但是,当 Spotify 未运行时,我没有得到预期的信息,并且 qdbus 将错误写入 stderr 流。我想利用 qdbus 写入错误流的事实来确定故障并在那里停止程序。(这也应该捕获与 spotify 是否正在运行无关的任何其他错误)

我的理解是lua popen使用popen3可以细分stdout和stderr。但到目前为止我所有的努力都没有结果,我的错误流总是空的。是否可以检查 stderr 中的非 nil 值以确定对 qdbus(或 awk)的错误调用?

谢谢!