Dbus 在启动时看不到 ru.gentoo.KbddService

Dbus 在启动时看不到 ru.gentoo.KbddService

我已经安装了Xubuntu 16.04,后来我安装了i3wm,我喜欢它。但是,有一个有趣的问题。我使用 kbdd 和 setxkbmap 来切换和控制键盘布局。所以,我把这个放进去~/.xsessionrc:

#!/bin/sh
kbdd
exec setxkbmap "us,ua,ru" ",winkeys" "grp:shift_caps_toggle" &
dropbox start &

这一切都有效,但是当我尝试通过 dbus 将我自己的“当前布局指示器”添加到 i3bar 时:

dbus-send --print-reply=literal --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.getCurrentLayout | awk '{ print $2 }'

它显示一个错误:

Error org.freedesktop.DBus.Error.ServiceUnknown: The name ru.gentoo.KbddService was not provided by any .service files

但如果我再次从终端 kbdd 启动,它就可以工作了!而且,kbdd 的 pid 根本没有改变。所以,问题可能是按照开始某事的顺序。顺便说一句,在另一台计算机上我使用空白登录和 startx 命令来启动 i3,所以我使用 ~/.xinitrc 而不是 ~/.sessionrc 并且它工作得很好。有人可以帮忙吗?

附录:

kbdd的pid小于dbus-launcher的pid,但dbus-monitor的pid小于kbdd的pid。看来,这也是有原因的。但为什么?我应该为 systemd 编写一些单元脚本来在其他东西的 dbus-launcher 之后启动 kbdd 吗?

相关内容