如何通过dbus-send调用动态生成目标的DBus方法?
解决动态DBus连接名的方法调用问题
问题原因
你用dbus-send时加了--system参数指定系统总线,但:1.334是**会话总线(Session Bus)**上的动态连接名,和系统总线不互通;同时动态连接名没有对应的.service文件,因此触发ServiceUnknown错误。而qdbusviewer默认使用会话总线,所以能正常调用。
解决步骤
1. 修正dbus-send命令的总线参数
把--system替换成--session(或直接省略,默认就是会话总线),执行以下命令:
dbus-send --session --type=method_call --print-reply --dest=:1.334 /StatusNotifierItem org.kde.StatusNotifierItem.ContextMenu
2. 使用qdbus工具调用(更简便)
qdbus是和qdbusviewer同系列的命令行工具,对动态连接名支持更友好,直接执行:
qdbus :1.334 /StatusNotifierItem org.kde.StatusNotifierItem.ContextMenu
注意事项
动态连接名:1.xx仅在当前用户会话中有效,目标进程重启或会话结束后,该标识会变化,需重新通过dbus-monitor或qdbus工具获取新的连接名。
内容的提问来源于stack exchange,提问作者ntfs1984
相关产品推荐
相关产品推荐

