Como suspender da linha de comando para que a tela esteja bloqueada?

10

Estou usando o Xubuntu 12.04. No Power Manager, marquei Extended -> Lock screen ao suspender / hibernar. Se eu optar por suspender no menu principal / Painel 1, a tela está bloqueada. No entanto, se eu usar dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend(consulte Como suspender / hibernar na linha de comando ?; Eu uso esse comando através de um atalho de teclado), a tela não está bloqueada. Como posso (1) suspender o sistema (2) com a tela bloqueada ao mesmo tempo (3) não requer direitos de root para fazer isso [desde que eu gostaria que o comando fosse atribuído a um atalho de teclado].

Marius Hofert
fonte

Respostas:

10

Você pode fazer isso usando o seguinte:

gnome-screensaver-command --lock && dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

Em um atalho de teclado, você precisa sh -c "<command>"substituir <command>com o comando acima, como:

sh -c "gnome-screensaver-command --lock && dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend"

Se o comando acima não funcionar, você também pode tentar usar um arquivo de script de shell (por exemplo suspend_lockscreen.sh). Primeiro crie o arquivo, chame os seguintes comandos em um console:

cd ~
echo "gnome-screensaver-command --lock" >> suspend_lockscreen.sh
echo "dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend" >> suspend_lockscreen.sh
chmod +x suspend_lockscreen.sh

Isso criará um arquivo chamado suspend_lockscreen.sh na pasta inicial do usuário. Em seguida, no atalho apenas chamar: ./suspend_lockscreen.sh.

Nota: gnome-screensaver-commandpode ser substituído por xscreensaver-command, como indicado em um comentário.

amfcosta
fonte
Nope só bloquear a tela e se esquece sobre suspensão lo de acordo com um comentário feito na resposta que eu fiz;)
Rinzwind
1
Ahh que bom. Acabei de perceber que gnome-screensaver-commandtambém pode ser substituído por xscreensaver-commandnenhuma instalação adicional é necessária. Sem a && dbus-send...parte, a pessoa simplesmente obtém uma trava (sem suspensão); com ele, é possível suspender com trava ao acordar. Perfeito.
Marius Hofert
Infelizmente, o comando funciona a partir do terminal, mas não a partir do teclado atalho Defini :-( Você sabe o que poderia ser o problema?
Marius Hofert
@MariusHofert Atualizei a resposta sobre como usar os comandos de um shurtcut do teclado. Veja se funciona como você precisa. (Eu testei no Ubuntu 12.04 e funcionou).
Amfcosta
Ainda o mesmo problema: o bloqueio funciona; suspensão não (Xubuntu 12.04)
Marius Hofert
2

Eu estava usando o comando dbus do amfcosta para suspender da linha de comando. No entanto, no resumo, eth0 estava inoperante.

Eu encontrei este comando:

xfce4-session-logout --suspend

Este comando desabilita a rede, suspende e reativa a rede quando o computador acorda.

xfce4-session-logouté específico do xfce, mas outros ambientes de área de trabalho podem ter *-session-logoutcomandos semelhantes .

Estou executando o Xubuntu 14.04.

Atualização: Isso pode não afetar outras pessoas, mas acontece que no meu Asus EEE 900, a conexão Ethernet com fio só funciona todas as vezes que o EEE é ativado. É claro que isso é muito chato e significa que a suspensão é inutilizável.

mpb
fonte
1

Com o Ubuntu 15.10, isso também funciona:

gnome-screensaver-command --lock && systemctl -i suspend
iGEL
fonte
0

Nota: o xscreensaver-commandúnico funciona com a opção -lock(com 1 hífen, não o dobro que com o gnome-screensaver-command). No entanto, o comando só funciona quando o protetor de tela está sendo executado, portanto, não é muito útil.

LinuxRev
fonte