Eu tenho o mate-screensaver instalado em uma máquina executando o Linux Mint 16. Nessa máquina, posso abrir um terminal e consultar o estado do protetor de tela:
dan@box1 ~ $ echo $DISPLAY
:0.0
dan@box1 ~ $ mate-screensaver-command -q
The screensaver is inactive
The screensaver is not inhibited
Tudo isso funciona bem e faz sentido. No entanto, quando eu SSH nessa mesma máquina, não recebo os resultados esperados:
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!
Esse mesmo método funciona em todos os meus outros computadores, todos executando várias versões do Mint. Nada de estranho está sendo registrado no meu ~/.xsession-errors
.
Depois de ler esta resposta , descobri que definir meu DBUS_SESSION_BUS_ADDRESS
para unix:abstract=/tmp/dbus-ToCuEUyLn0,guid=9296df6ba791b044d4236e45545fbe55
(seu valor em um terminal local) faz as coisas funcionarem como eu esperava no SSH. No entanto, ~/.dbus/session-bus/*-0
contém um valor diferente, que não funciona, e não consigo encontrar um arquivo que contenha o valor correto para essa variável.
Por que uma das minhas máquinas exige que esse valor seja alterado, enquanto o restante não? Se esse comportamento faz sentido ou é complicado de corrigir, onde mais eu procuraria encontrar o valor correto para essa variável?
DBUS_SESSION_BUS_ADDRESS=$(ps -fwu $(whoami) | sed -n 's/.*[d]bus.*--address=\(.*\)/\1/p')
Não é perfeito, não é confiável, mas deve funcionar a maior parte do tempo.