Estou trabalhando em um script que detecta se e quando uma sessão do Gnome é "bloqueada" por um usuário para chutar o usuário e impedir que pessoas bloqueiem telas em um laboratório de uso público. No entanto, parece que a única maneira de fazer isso é lançar um monitor dbus da seguinte forma:
dbus-monitor --session \ "type=signal,interface=org.gnome.ScreenSaver"
Infelizmente, não consigo fazer isso funcionar como root, não importa quantas coisas eu tente. Eu tentei o seguinte:
1
eval 'dbus-launch'
dbus-monitor --session ...
Isso não é iniciado com o mesmo erro
2
export $(dbus-launch)
dbus-monitor --session ...
Isso inicia, mas não monitora com êxito as mensagens.
3
eval 'dbus-launch'
export DBUS_SESSION_BUS_ADDRESS
dbus-monitor --session ...
Isso inicia, mas não monitora as mensagens
O erro exato quando recebo o erro da sessão X11 é o seguinte:
Failed to open connection to session message bus: dbus-launch failed to autolaunch D-Bus session: Fd 4 did not have the close-on-exec flag set! Setting the flag.
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified
Autolaunch error: X11 initialization failed.
Então, simplesmente, eu preciso ser capaz de monitorar remotamente a sessão org.gnome.ScreenSaver dbus messages (idealmente como root, já que configurar um novo usuário pode ser uma dor) e não consigo descobrir como fazer isso. Também deve ser adicionado que, se eu estiver logado como um usuário, posso executar o comando dbus-monitor sozinho sem nenhum problema (ele registra como esperado).
Mais informações porque não pode prejudicar.
Kernel: RHEL5
2.6.18-406.el5
Versão do DBUS:
D-Bus Message Bus Launcher 1.1.2
Versão do GNOME:
2.16.0