【发布时间】:2016-12-02 02:29:02
【问题描述】:
我有运行 shell 脚本的用户服务,它试图像这样访问我的会话的锁屏状态:
# Test Unity screen-lock:
isLocked() {
isLocked=$(gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked)
}
lock() {
if [[ $isLocked == "(false,)" ]]; then
gnome-screensaver-command -l
elif [[ $isLocked == "(true,)" ]]; then
exit 1
fi
exit 0
}
问题是服务“是每个用户的进程,而不是每个会话”,我不知道如何访问会话 dbus:
GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name com.canonical.Unity was not provided by any .service files
【问题讨论】:
-
这段代码中是否设置了 DBUS_SESSION_BUS_ADDRESS 变量?
-
不,不是。应该是?
-
据我所知,它需要连接到总线,并且 pam_systemd 应该在您登录时设置它。如果没有设置,则会启动一个新的 dbus,您将无法与其他事物交谈。我对这些都不太了解,所以不要相信我的话。