Comment puis-je verrouiller l'écran en utilisant le nouvel écran de verrouillage à partir de la ligne de commande?

19

Ubuntu 14.04 introduit un nouvel écran de verrouillage qui ressemble à l'écran de connexion.

Nouvel écran de verrouillage

Je suis toujours en mesure de verrouiller l'écran en utilisant la commande gnome-screensaver-command --lock(comme je l'ai toujours fait auparavant), qui sous 14.04 verrouille l'écran, mais:

  • Si vous l'exécutez à partir du bureau, il verrouille l'écran à l'aide du nouvel écran de verrouillage.
  • Si vous l'exécutez à partir d'une console virtuelle ou via SSH, il verrouille l'écran en utilisant l' ancien écran de verrouillage .

J'ai également essayé d'utiliser xdg-screensaver lock, mais cela fonctionne de la même manière que gnome-screensaver-command --lock(n'utilise le nouvel écran de verrouillage que lorsqu'il est exécuté depuis le bureau).

L'exécution light-locker-command --lockn'a pas fonctionné, car elle light-lockern'est pas installée.

Je suppose qu'il doit y avoir des différences entre l'exécution de la même commande à partir du bureau et son exécution via SSH / console virtuelle, mais je n'ai pas pu trouver de différence dans les variables d'environnement.

Donc, ma question est: comment puis-je verrouiller l'écran en utilisant le nouvel écran de verrouillage Unity et non l'ancien écran de verrouillage à partir de la ligne de commande?

Cette question est probablement liée car elle demande la nouvelle commande qui doit être utilisée, alors voici une autre question: pourquoi l'exécution de la même commande de verrouillage donne-t-elle des résultats différents?

Notez que ce gnome-screensavern'est plus utilisé dans 14.04, selon ce rapport de bogue :

Ce n'est pas vraiment un bug gnome-screensaver, ce composant a cessé d'être utilisé dans trusty.

Léo Lam
la source
2
J'aimerais aussi savoir. L'utilisation dm-tool lockse rapproche: il verrouille l'écran, mais (contrairement à l'écran de verrouillage Unity par défaut) vous permet également de changer d'utilisateur.
Aibara
2
dm-tool locket dm-tool switch-to-greetersemblent faire la même chose: vous ramène à l'écran de connexion (greeter), qui ressemble beaucoup à l'écran de verrouillage.
Léo Lam

Réponses:

14

Je n'ai pas gnome-screensaverinstallé, et la seule commande que je puisse trouver qui fonctionne est la suivante:

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

Aibara
la source
5
qdbus org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
Aquarius Power
Cela fonctionnait auparavant, mais cela ne semble plus fonctionner en 15.10: /
Léo Lam
@ LéoLam Utilisez-vous une image en direct? J'utilise toujours 14.04, mais j'ai testé à la fois ma commande et Aquarius Power en 15.10 et je les ai fait fonctionner. Cependant, j'ai dû activer l'écran de verrouillage pour le faire fonctionner via cette commandegsettings set org.gnome.desktop.lockdown disable-lock-screen false
Aibara
Non, c'est sur une véritable installation Ubuntu. gsettings get org.gnome.desktop.lockdown disable-lock-screenretourne false. Désormais, il n'y a plus de sortie lors de l'exécution de dbus-send. Peut-être que gnome-screensaver est nécessaire pour que cela fonctionne?
Léo Lam
1
Voir mes réponses s'il vous plaît, peut-être que 15.10 a abandonné l'utilisation de l' org.gnome.ScreenSaverinterface dbus, donc c'est probablement une meilleure idée de communiquer avec l'interface dbus d'Unity
Sergiy Kolodyazhnyy
3

La réponse acceptée a la bonne idée, sauf que l'écran de verrouillage est lié au panneau d'unité, alors qu'il org.gnome.ScreenSavers'agit évidemment d'un type de schéma lié à Gnome, il peut donc fonctionner ou non.

Il existe cependant une interface dbus pour Unity, et tout ce dont nous avons besoin est d'appeler cette méthode com.canonical.Unity.Session.Lockcomme ceci

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

Note latérale :

La preuve du fait qu'il est lié au panneau d'unité est simple, lorsque l'écran est verrouillé, le processus /usr/lib/unity/unity-panel-servicechangera /usr/lib/unity/unity-panel-service --lock-modecomme observé à partir de tty1.

Sergiy Kolodyazhnyy
la source
cela fonctionne dans une session graphique, mais échoue dans une session SSH même lors de la configuration manuelle de $ DISPLAY. "Le service 'com.canonical.Unity' n'existe pas.".
Léo Lam
Cela n'a rien à voir avec la DISPLAYvariable, mais avec le dbus. Je ne sais pas si over ssh Unity n'a pas de session dbus ou non, donc je ne peux pas vous aider dans cette partie. Je vais demander autour mais jusqu'à présent, c'est autant que je peux dire.
Sergiy Kolodyazhnyy
Essayez de courir dbus-launch --exit-with-session gnome-terminalavant cela. serverfault.com/a/411326
Sergiy Kolodyazhnyy
Peut également se connecter à une session screen / tmux exécutée dans X et exécuter la commande à partir de là. Était ma dernière solution de contournement pour me connecter à la bonne session dbus à partir d'un vterm.
Iiridayn
2

J'ai récemment découvert que cela xdg-screensaver lock fonctionne aussi et que c'est aussi une solution assez simple!

Paulius Šukys
la source
Il est mentionné dans le PO qu'il ne fonctionne pas dans tous les cas. Uniquement lorsque vous l'exécutez localement dans un terminal à partir de l'interface graphique.
Léo Lam
A travaillé pour moi à distance dans une session SSH dans une machine 18.04 LTS.
Benjamin R
1

Vous pouvez toujours envoyer les séquences de touches: xdotool key super+l.

wieczorek1990
la source