¿Cómo suspender de la línea de comando de modo que la pantalla esté bloqueada?

10

Estoy usando Xubuntu 12.04. En Power Manager, he marcado Extendido -> Bloquear pantalla cuando voy a suspender / hibernar. Si elijo suspender desde el menú principal / Panel 1, la pantalla se bloquea. Sin embargo, si lo uso dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend(consulte ¿Cómo puedo suspender / hibernar desde la línea de comandos?; Uso este comando a través de un atajo de teclado), la pantalla no está bloqueada. ¿Cómo puedo (1) suspender el sistema? (2) tener la pantalla bloqueada al mismo tiempo (3) no requieren derechos de root para hacerlo [ya que me gustaría asignar el comando a un atajo de teclado].

Marius Hofert
fuente

Respuestas:

10

Puede hacerlo utilizando lo siguiente:

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

En un atajo de teclado, debe sh -c "<command>"reemplazarlo <command>con el comando anterior, como:

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

Si el comando anterior no funciona, también puede intentar usar un archivo de script de shell (por ejemplo suspend_lockscreen.sh). Primero cree el archivo, llame a los siguientes comandos en una consola:

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

Eso creará un archivo llamado suspend_lockscreen.sh en la carpeta de inicio del usuario. Luego, en el acceso directo sólo llamar: ./suspend_lockscreen.sh.

Nota: gnome-screensaver-commandse puede reemplazar por xscreensaver-command, como se señala en un comentario.

amfcosta
fuente
No, solo bloquea la pantalla y se olvida de suspenderla según un comentario hecho en la respuesta que hice;)
Rinzwind
1
Ah bien. Me acabo de dar cuenta de que gnome-screensaver-commandtambién se puede reemplazar por xscreensaver-commandlo que no se requiere instalación adicional. Sin la && dbus-send...parte uno simplemente obtiene un bloqueo (sin suspender); con él, uno obtiene una suspensión con bloqueo al despertar. Perfecto.
Marius Hofert
Desafortunadamente, el comando funciona desde la terminal pero no desde el atajo de teclado que definí :-( ¿Sabes cuál podría ser el problema?
Marius Hofert
@MariusHofert He actualizado la respuesta sobre cómo usar los comandos de un atajo de teclado. Vea si funciona como lo necesita. (Lo probé en Ubuntu 12.04 y funcionó).
amfcosta
Sigue siendo el mismo problema: el bloqueo funciona; suspender no lo hace (Xubuntu 12.04)
Marius Hofert
2

Estaba usando el comando dbus de amfcosta para suspenderlo desde la línea de comando. Sin embargo, al reanudar, eth0 estaba caído.

Entonces encontré este comando:

xfce4-session-logout --suspend

Este comando deshabilita las redes, suspende y luego vuelve a habilitar las redes cuando la computadora se activa.

xfce4-session-logoutes específico de xfce, pero otros entornos de escritorio pueden tener *-session-logoutcomandos similares .

Estoy ejecutando Xubuntu 14.04.

Actualización: Esto puede no afectar a otros, pero resulta que en mi Asus EEE 900, la conexión por cable de Ethernet solo funciona cada dos veces que el EEE se activa. Esto es, por supuesto, muy molesto, y significa que suspender es inutilizable.

mpb
fuente
1

Con Ubuntu 15.10, esto también funciona:

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

Nota: el xscreensaver-commandúnico funciona con la opción -lock(con 1 guión, no un doble como con el gnome-screensaver-command). Sin embargo, el comando solo funciona cuando se ejecuta el protector de pantalla, por lo que no es muy útil.

LinuxRev
fuente