Tela de bloqueio com gnome-screensaver-command como root (do script /etc/pm/sleep.d)

1

Meu sistema (Ubuntu 15.10) tem um bug: Eu habilitei "Exigir minha senha ao acordar da suspensão" no painel de configurações "Brilho e Bloqueio", mas NÃO solicita minha senha, que é incrivelmente insegura.

Como solução alternativa, estou tentando escrever um script que ficará sob /etc/pm/sleep.d . Deve ser algo assim:

#!/bin/bash

case "${1}" in
  hibernate)
    # Do nothing
    ;;
  resume|thaw)
    su -c "gnome-screensaver-command --lock" MYUSERNAME
    ;;
esac

O problema é que isso não funciona; o gnome-screensaver-command falha com a seguinte mensagem:

** Message: Failed to get session bus: Could not connect: Connection refused

Depois tentei alterar o comando para:

su MYUSERNAME -c "export $(dbus-launch) && gnome-screensaver-command -l"

O que falha com:

** Message: Failed to get session bus: The connection is closed

Então, a pergunta é: qual seria o jeito certo de fazer isso?

    
por dsetton 10.12.2015 / 01:33

2 respostas

2

Você precisa exportar DBUS_SESSION_BUS_ADDRESS da máquina remota no seu ssh antes de usar os comandos dbus

Você precisa encontrá-lo localmente na máquina para a qual deseja enviar comandos remotamente, digitando o comando:

set | grep DBUS

Isto lhe dará o valor de DBUS_SESSION_BUS_ADDRESS atual das shells que você deve exportar no seu shell ssh após conectar-se à máquina remota e então desfrutar.

    
por sandman 20.03.2016 / 12:46
0

Consegui resolver isso lendo o DBUS_SESSION_BUS_ADDRESS da sessão atual do gnome. Exemplo completo:

dbus_address=$(xargs -n 1 -0 < /proc/'pgrep gnome-session'/environ | grep DBUS)
su USERNAME -c "export $dbus_address && gnome-screensaver-command -l"
    
por Joe 22.01.2018 / 05:44