¿Cómo puedo bloquear la pantalla usando la nueva pantalla de bloqueo desde la línea de comandos?

19

Ubuntu 14.04 presenta una nueva pantalla de bloqueo que se parece a la pantalla de inicio de sesión.

Nueva pantalla de bloqueo

Todavía puedo bloquear la pantalla usando el comando gnome-screensaver-command --lock(como siempre lo hice antes), que bajo 14.04 bloquea la pantalla, pero:

  • Si lo está ejecutando desde el escritorio, bloquea la pantalla usando la nueva pantalla de bloqueo.
  • Si lo está ejecutando desde una consola virtual o mediante SSH, bloquea la pantalla usando la pantalla de bloqueo anterior .

También he intentado usarlo xdg-screensaver lock, pero funciona de la misma manera que lo gnome-screensaver-command --lockhace (solo usa la nueva pantalla de bloqueo cuando se ejecuta desde el escritorio).

La ejecución light-locker-command --lockno funcionó, ya light-lockerque no está instalada.

Supongo que debe haber algunas diferencias entre ejecutar el mismo comando desde el escritorio y ejecutarlo a través de SSH / consola virtual, pero no pude encontrar ninguna diferencia en las variables de entorno.

Entonces, mi pregunta es: ¿cómo puedo bloquear la pantalla usando la nueva pantalla de bloqueo de Unity y no la vieja pantalla de bloqueo de la línea de comando?

Esta pregunta probablemente esté relacionada, ya que pide el nuevo comando que debe usarse, así que aquí hay otra pregunta: ¿Por qué ejecutar el mismo comando de bloqueo da resultados diferentes?

Tenga en cuenta que gnome-screensaverya no se usa en 14.04, de acuerdo con este informe de error :

Eso no es realmente un error de gnome-screensaver, ese componente dejó de usarse en confianza.

Léo Lam
fuente
2
Me gustaría saber también. El uso dm-tool lockse acerca: bloquea la pantalla, pero (a diferencia de la pantalla de bloqueo predeterminada de Unity) también le permite cambiar de usuario.
Aibara
2
dm-tool locky dm-tool switch-to-greeterparece estar haciendo lo mismo: llevarlo de vuelta a la pantalla de inicio de sesión (greeter), que se parece mucho a la pantalla de bloqueo.
Léo Lam

Respuestas:

14

No lo he gnome-screensaverinstalado, y el único comando que puedo encontrar que funciona es este:

dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock

Aibara
fuente
55
qdbus org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
Acuario Power
Esto solía funcionar, pero parece que ya no funciona en 15.10: /
Léo Lam
@ LéoLam ¿Estás usando una imagen livecd? Todavía estoy usando 14.04, pero probé tanto mi comando como el de Acuario en 15.10 y los puse a trabajar. Sin embargo, tuve que habilitar la pantalla de bloqueo para que funcione a través de este comandogsettings set org.gnome.desktop.lockdown disable-lock-screen false
Aibara
No, está en una instalación real de Ubuntu. gsettings get org.gnome.desktop.lockdown disable-lock-screenvuelve false. Ahora no hay salida en absoluto cuando se ejecuta dbus-send. ¿Quizás se necesita gnome-screensaver para que esto funcione?
Léo Lam
1
Vea mis respuestas por favor, tal vez 15.10 ha abandonado el uso de la org.gnome.ScreenSaverinterfaz dbus, por lo que probablemente sea mejor idea comunicarse con la interfaz dbus de Unity
Sergiy Kolodyazhnyy
3

La respuesta aceptada tiene la idea correcta, excepto que la pantalla de bloqueo está relacionada con el panel de la unidad, mientras org.gnome.ScreenSaverque obviamente es un tipo de esquema relacionado con Gnome, por lo que puede o no funcionar.

Sin embargo, existe una interfaz dbus para Unity, y todo lo que necesitamos es llamar a este método com.canonical.Unity.Session.Lockasí

qdbus com.canonical.Unity  /com/canonical/Unity/Session com.canonical.Unity.Session.Lock

Nota al margen :

La prueba del hecho de que está relacionado con el panel de la unidad es simple, cuando tiene la pantalla bloqueada, el proceso /usr/lib/unity/unity-panel-servicecambiará /usr/lib/unity/unity-panel-service --lock-modesegún lo observado desde tty1.

Sergiy Kolodyazhnyy
fuente
esto funciona en una sesión gráfica, pero falla en una sesión SSH incluso cuando se configura $ DISPLAY manualmente. "El servicio 'com.canonical.Unity' no existe".
Léo Lam
Esto no tiene nada que ver con DISPLAYvariable, sino con dbus. No sé si Over ssh Unity no tiene una sesión dbus o no, así que no puedo ayudarte en esa parte. Preguntaré por ahí, pero hasta ahora eso es todo lo que puedo decir.
Sergiy Kolodyazhnyy
Intenta correr dbus-launch --exit-with-session gnome-terminalantes de eso. serverfault.com/a/411326
Sergiy Kolodyazhnyy
También se puede conectar a una sesión screen / tmux que se ejecuta dentro de X y ejecutar el comando desde allí. Fue mi solución final para conectarme a la sesión de dbus correcta desde un vterm.
Iiridayn
2

¡Recientemente descubrí que xdg-screensaver lock también funciona y que es una solución bastante simple también!

Paulius Šukys
fuente
En el OP se menciona que no funciona en todos los casos. Solo cuando lo está ejecutando localmente en un terminal desde la GUI.
Léo Lam
Trabajó para mí de forma remota en una sesión SSH en una máquina 18.04 LTS.
Benjamin R
1

Siempre se puede enviar las pulsaciones de teclas: xdotool key super+l.

wieczorek1990
fuente