我已经在运行Linux Mint 16的计算机上安装了mate-screensaver,在该计算机上,我可以打开一个终端并查询屏幕保护程序的状态:
dan@box1 ~ $ echo $DISPLAY
:0.0
dan@box1 ~ $ mate-screensaver-command -q
The screensaver is inactive
The screensaver is not inhibited
这一切都很好,很有意义。但是,当我通过SSH进入同一台计算机时,没有得到我期望的结果:
dan@box2 ~ $ ssh box1
dan@box1 ~ $ export DISPLAY=:0.0
dan@box1 ~ $ echo $DISPLAY
:0.0
dan@box1 ~ $ mate-screensaver-command -q
** Message: Screensaver is not running!
我的所有其他计算机(都运行各种版本的Mint)都可以使用这种方法。没有什么奇怪的记录到我的~/.xsession-errors
。
读完此答案后,我发现将my设置DBUS_SESSION_BUS_ADDRESS
为unix:abstract=/tmp/dbus-ToCuEUyLn0,guid=9296df6ba791b044d4236e45545fbe55
(在本地终端中的值)可使事情按我期望的那样通过SSH进行。但是,~/.dbus/session-bus/*-0
包含一个不同的值,这是行不通的,而且我找不到包含该变量正确值的文件。
为什么我的一台机器要求更改该值,而其余的则不需要?如果该行为有意义或难以纠正,那么我还要在哪里寻找该变量的正确值?
DBUS_SESSION_BUS_ADDRESS=$(ps -fwu $(whoami) | sed -n 's/.*[d]bus.*--address=\(.*\)/\1/p')
不完美,不可靠,但在大多数情况下都应该起作用。