我创建了一些禁用的帐户,其唯一目的是在这些帐户中自定义 Docky。每个帐户都有一组代表工具集的 Docky 项目。这应该能让你明白我所说的Docky 工具套装:
- 管理应用工具集
- 在线用户应用工具集
- 离线用户应用工具集
- Office 应用工具集
- 游戏玩家应用工具集等
从这些已禁用的帐户中,我希望实际用户通过 gksudo 调用启用或禁用工具集:
xhost + local:dockyAdminUser
gksudo -u dockyAdminUser /usr/bin/docky
我已经设置了帐户,但当我以这种方式启动 Docky 时,它会抱怨需要 DBus 但找不到它。我如何才能使 DBus 可用,以便 Docky 可以以这种方式启动?
注意:Tomboy 也会发生同样的事情,它无法运行并抱怨 dbus 问题。
注意:我并不是在寻找建议我不以其他用户身份启动 Docky 的解决方案。我必须以其他用户身份启动 Docky 的原因不止一个。但为了让问题更清晰,我保留了这些原因。*
答案1
DBUS 是一个 IPC 系统,这意味着它是不同程序相互通信的一种方式。
在普通的 Ubuntu 系统中,有一个系统 dbus 实例,每个登录用户都有一个实例运行。属于一个用户的进程如果想要与同一用户的其他进程进行通信,则不需要使用系统范围的进程。
Docky 和 Tomboy 似乎正在尝试使用用户 dbus。因此,至少您应该在 Docky 之前为该用户启动一个 dbus 守护程序。您可以使用以下命令执行此操作:
su - user -c 'dbus-launch'
但你很可能会发现另一个问题。计算机在登录时会做很多事情,而像 Docky 这样的复杂程序可能期望其中一些事情已经完成。
您可以检查 /etc/X/Xsession.d 以查找登录时运行的大多数脚本。这些是与 X 相关的脚本,这意味着它们在所有桌面环境中执行。Docky 需要的任何花哨的东西都应该在这里启动,因为 Docky 独立于 DE。