Dan*_*Dan 9 ssh d-bus linux-mint
我在一台运行 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
Run Code Online (Sandbox Code Playgroud)
这一切都很好,而且很有意义。但是,当我通过 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!
Run Code Online (Sandbox Code Playgroud)
同样的方法适用于我所有其他运行不同版本 Mint 的计算机。没有什么奇怪的被记录到我的~/.xsession-errors
.
在阅读了这个答案之后,我发现将 my 设置DBUS_SESSION_BUS_ADDRESS
为unix:abstract=/tmp/dbus-ToCuEUyLn0,guid=9296df6ba791b044d4236e45545fbe55
(它在本地终端中的值)可以让事情像我期望的那样通过 SSH 进行。但是,~/.dbus/session-bus/*-0
包含一个不同的值,它不起作用,我找不到包含该变量正确值的文件。
为什么我的一台机器需要更改该值,而其余的则不需要?如果该行为有意义或难以纠正,我还能在哪里寻找该变量的正确值?
我用它来获取它,但它依赖于正在运行的会话:
if [[ -z $DBUS_SESSION_BUS_ADDRESS ]]; then
pgrep "gnome-session" -u "$USER" | while read -r line; do
exp=$(cat /proc/$line/environ | grep -z "^DBUS_SESSION_BUS_ADDRESS=")
echo export "$exp" > ~/.exports.sh
break
done
if [[ -f ~/.exports.sh ]]; then
source ~/.exports.sh
fi
fi
Run Code Online (Sandbox Code Playgroud)
将“gnome”更改为您拥有的任何其他会话(它必须正在运行)。
归档时间: |
|
查看次数: |
6467 次 |
最近记录: |