Determine DBUS_SESSION_BUS_ADDRESS de fora da sessão X

8

Eu tenho mate-screensaver instalado em uma máquina rodando o Linux Mint 16. Nessa máquina, eu 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 faço SSH na mesma máquina, não obtenho 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, o que não funciona, e não consigo encontrar um arquivo contendo o valor correto para essa variável.

Por que uma das minhas máquinas exige que esse valor seja alterado, enquanto o resto não? Se esse comportamento faz sentido ou é complicado de corrigir, onde mais eu procuraria encontrar o valor correto para essa variável?

    
por Dan 09.11.2014 / 22:28

1 resposta

3

Eu uso isso para obtê-lo, mas ele depende de uma sessão em execução:

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

Mude o 'gnome'to para qualquer outra sessão que você tenha (tem que estar rodando).

    
por 17.11.2016 / 22:25