У меня установлена mate-screensaver на компьютере под управлением Linux Mint 16. На этом компьютере я могу открыть терминал и запросить состояние экранной заставки:
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')
не идеально, не надежно, но должно работать большую часть времени.