Wie kann ich den Bildschirm mit dem neuen Sperrbildschirm über die Befehlszeile sperren?

19

Ubuntu 14.04 führt einen neuen Sperrbildschirm ein , der dem Anmeldebildschirm ähnelt.

Neuer Sperrbildschirm

Ich kann den Bildschirm immer noch mit dem Befehl sperren gnome-screensaver-command --lock(wie ich es immer getan habe), der unter 14.04 den Bildschirm sperrt, aber:

  • Wenn Sie es vom Desktop ausführen, wird der Bildschirm mit dem neuen Sperrbildschirm gesperrt.
  • Wenn Sie es von einer virtuellen Konsole oder über SSH ausführen , wird der Bildschirm mit dem alten Sperrbildschirm gesperrt .

Ich habe es auch versucht xdg-screensaver lock, aber es funktioniert auf die gleiche Weise wie gnome-screensaver-command --lock(verwendet den neuen Sperrbildschirm nur, wenn er vom Desktop ausgeführt wird).

Laufen light-locker-command --lockhat nicht funktioniert, da light-lockernicht installiert.

Ich denke, es muss einige Unterschiede zwischen der Ausführung desselben Befehls vom Desktop und der Ausführung über SSH / virtuelle Konsole geben, aber ich konnte keinen Unterschied in den Umgebungsvariablen feststellen.

Meine Frage lautet also: Wie kann ich den Bildschirm mit dem neuen Unity-Sperrbildschirm und nicht mit dem alten Sperrbildschirm über die Befehlszeile sperren?

Diese Frage hängt wahrscheinlich damit zusammen, dass der neue Befehl verwendet werden muss. Hier ist eine weitere Frage: Warum führt das Ausführen desselben Sperrbefehls zu unterschiedlichen Ergebnissen?

Beachten Sie, dass gnome-screensavergemäß diesem Fehlerbericht in 14.04 nicht mehr verwendet wird :

Das ist nicht wirklich ein Gnome-Bildschirmschoner-Fehler, diese Komponente wird nicht mehr in vertrauenswürdigen Umgebungen verwendet.

Léo Lam
quelle
2
Würde ich auch gerne wissen Die Verwendung von dm-tool lockwird geschlossen: Sie sperrt den Bildschirm, ermöglicht aber (anders als beim Standard-Unity-Sperrbildschirm) auch das Wechseln von Benutzern.
Aibara
2
dm-tool lockund dm-tool switch-to-greeterscheinen dasselbe zu tun: Bringen Sie Sie zurück zum Anmeldebildschirm (Begrüßer), der dem Sperrbildschirm sehr ähnlich sieht.
Léo Lam

Antworten:

14

Ich habe nicht gnome-screensaverinstalliert und der einzige Befehl, den ich finden kann, der funktioniert, ist der folgende:

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

Aibara
quelle
5
qdbus org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
Aquarius Power
Dies hat früher funktioniert, aber es scheint in 15.10 nicht mehr zu funktionieren: /
Léo Lam
@ LéoLam Verwenden Sie ein Live-CD-Image? Ich verwende immer noch 14.04, aber ich habe sowohl mein Kommando als auch das von Aquarius Power in 15.10 getestet und sie zum Arbeiten gebracht. Allerdings musste ich den Sperrbildschirm aktivieren, damit er über diesen Befehl gsettings set org.gnome.desktop.lockdown disable-lock-screen false
funktioniert
Nein, es ist eine echte Ubuntu-Installation. gsettings get org.gnome.desktop.lockdown disable-lock-screenkehrt zurück false. Jetzt gibt es überhaupt keine Ausgabe mehr, wenn dbus-send ausgeführt wird. Vielleicht wird ein Gnome-Bildschirmschoner benötigt, damit dies funktioniert?
Léo Lam
1
Sehen Sie bitte meine Antworten, vielleicht hat 15.10 org.gnome.ScreenSaver
aufgehört
3

Die akzeptierte Antwort hat die richtige Idee, mit der Ausnahme, dass sich der Sperrbildschirm auf das Unity-Bedienfeld bezieht, während org.gnome.ScreenSaveres sich offensichtlich um einen Schematyp handelt, der sich auf Gnome bezieht, sodass er möglicherweise funktioniert oder nicht.

Es gibt jedoch eine dbus-Schnittstelle für Unity, und wir müssen diese Methode nur com.canonical.Unity.Session.Lockso aufrufen

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

Randnotiz :

Der Beweis für die Tatsache, dass es mit Unity Panel zusammenhängt, ist einfach. Wenn Sie den Bildschirm gesperrt haben, /usr/lib/unity/unity-panel-serviceändert sich der Prozess /usr/lib/unity/unity-panel-service --lock-modewie ab tty1 beschrieben.

Sergiy Kolodyazhnyy
quelle
Dies funktioniert in einer grafischen Sitzung, schlägt jedoch in einer SSH-Sitzung fehl, selbst wenn $ DISPLAY manuell festgelegt wird. "Dienst 'com.canonical.Unity' existiert nicht."
Léo Lam
Das hat nichts mit DISPLAYVariable zu tun , sondern mit dbus. Mir ist nicht bekannt, ob in ssh Unity keine Dbus-Sitzung vorhanden ist oder nicht, daher kann ich Ihnen in diesem Bereich nicht weiterhelfen. Ich werde nachfragen, aber soweit ich das sagen kann.
Sergiy Kolodyazhnyy
Versuche dbus-launch --exit-with-session gnome-terminalvorher zu rennen . serverfault.com/a/411326
Sergiy Kolodyazhnyy
Kann auch eine Verbindung zu einer screen / tmux-Sitzung herstellen, die in X ausgeführt wird, und den Befehl von dort ausführen. War meine letzte Problemumgehung, um eine Verbindung zu der richtigen dbus-Sitzung von einem vterm herzustellen.
Freitag,
2

Ich habe kürzlich herausgefunden, dass das auch xdg-screensaver lock funktioniert und auch eine recht einfache Lösung ist!

Paulius Šukys
quelle
Im OP wird erwähnt, dass es nicht in allen Fällen funktioniert. Nur wenn Sie es lokal in einem Terminal über die GUI ausführen.
Léo Lam
Arbeitete für mich remote in einer SSH-Sitzung in einer 18.04 LTS-Maschine.
Benjamin R
1

Sie können jederzeit die Tastenanschläge senden: xdotool key super+l.

wieczorek1990
quelle