busctl 列表中未显示 zbus 连接

zbus connection not displayed in busctl list

我正在使用 zbus crate 使服务器能够从 dbus 获取事件。 它运行良好,我的代码(与文档中的 example 基本相同)能够接收事件,所以没问题。

我使用 busctl 发送事件,如示例所示:

busctl --user call org.zbus.MyGreeter /org/zbus/MyGreeter org.zbus.MyGreeter1 SayHello s "Maria"

而且我的代码能够很好地接收带有参数的事件。

问题是我遇到了 some issues with udev,在尝试修复它时我发现了一些奇怪的事情:

我的问题是:我的程序没有出现在busctl列表中正常吗?我是做错了什么还是使用了错误的库来做我想做的事?

好的,似乎有 2 条总线,而我没有使用系统总线。 我不得不将方法 session 替换为 system 以指示我希望我的程序在系统总线上 运行 。 像这样:

let _ = ConnectionBuilder::system()?
        .name("org.zbus.MyGreeter")?
        .serve_at("/org/zbus/MyGreeter", greeter)?
        .build()
        .await?;

这样做是不够的,因为我的程序没有权限在总线系统上创建服务。所以我必须在 /usr/share/dbus-1/system.d 中创建一个文件,其中我确实写了 需要的。