Wie kann ich meinen Bildschirm in Gnome 3 ohne GDM sperren?

50

Im Benutzermenü wird keine Option "Sperren" angezeigt, und die Standardverknüpfungen ( Ctrl+ Loder Ctrl+ Alt+ L) führen keine Aktionen aus.

Ich verwende Fedora 19 mit Gnome Shell 3.8.3 und XDM 1.1.11.

Ich verwende XDM wegen defekter XDMCP-Unterstützung in GDM - aber bevor ich auf Fedora 19 aktualisiert habe, hatte ich die Sperroption, auch wenn ich XDM verwendet habe.

Ich habe eine Antwort veröffentlicht, die die Ergebnisse meiner eigenen Forschung widerspiegelt. Grundsätzlich heißt es, dass es nicht möglich ist, eine Bildschirmsperre in Gnome 3.8 zu integrieren, ohne GDM auszuführen.

Ich hoffe wirklich, dass es eine bessere Antwort gibt. Bitte fügen Sie Ihre eigene Antwort hinzu, wenn es eine Möglichkeit gibt, dies zu tun, die ich übersehen habe.

jcsanyi
quelle
1
Versuchen Sie es Ctrl + Alt + L. Funktioniert es?
m0nhawk
1
@ m0nhawk Nein, das geht auch nicht. Ich habe die Frage entsprechend aktualisiert.
Jcsanyi
Seltsam, es funktioniert bei mir. Und was ist in Einstellungen - Tastatur - Kurzbefehle - System für eingestellt Lock screen?
m0nhawk
@ m0nhawk unter Gnome 3.8 ohne GDM?
Jcsanyi
2
@ m0nhawk Die Verknüpfung ist auf gesetzt Ctrl + L- aber das macht nichts.
Jcsanyi

Antworten:

38

Nach einigen Recherchen glaube ich, dass ich genug Informationen habe, um eine Antwort auf meine eigene Frage zu schreiben.

In Gnome Shell 3.6 und früheren gnome-screensaverVersionen war das alte Programm vorhanden, und wenn GDM nicht ausgeführt wurde, wurde gnome-screensaveres aufgerufen, sodass Sie den Bildschirm sperren können.

Ab Gnome Shell 3.8 (in Fedora 19 enthalten) wurde die gnome-screensaverUnterstützung vollständig eingestellt. Dies geschah aus drei Gründen: Reduzierte Codekomplexität in Verbindung mit der Tatsache, dass der Bildschirmschoner als nicht benötigtes Feature angesehen wird, und der Tatsache, dass der eventuelle Umzug nach Wayland die Unterstützung von Bildschirmschoner, Sperren usw. erfordert, um im Compositor zu sein.

Die einzige in Gnome integrierte Möglichkeit, den Bildschirm zu sperren, besteht darin, dass GDM ausgeführt wird, das auf eine dbus-Nachricht reagiert, die ihn auffordert, den Bildschirm zu sperren. Andere Anzeigemanager (wie XDM) sind nicht dafür ausgelegt, auf diese dbus-Meldung zu reagieren, sodass der Bildschirm nicht gesperrt werden kann.


Über diesen Link :

In alten Versionen von gnome würde der Befehl gnome-screensaver-command -l Ihren Bildschirm sperren. Da gnome-screensaver in gnome 3.8 nicht mehr enthalten ist, müssen Sie jetzt einen dbus-Anruf senden. Ich denke das wird dann von GDM erledigt.

$ dbus-send --type=method_call --dest=org.gnome.ScreenSaver \
    /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
jcsanyi
quelle
2
Vielen Dank an @slim, aber die Befehle, die Sie bearbeitet haben, tun nichts, es sei denn, Sie führen GDM aus. Sie helfen nicht, die Frage zu beantworten.
Jcsanyi
2
Klar, ich möchte immer noch den Inhalt des Links sehen, der eingefügt wird, falls diese Seite wegfällt.
SLM
@slim guter Punkt. Ich habe den Inhalt wieder als Zitat bearbeitet.
Jcsanyi
17

Super+ Lfunktioniert in Fedora 24, auf dem Gnome 3.20 ausgeführt wird

Sysadmiral
quelle
4
Dies funktioniert auch auf Ubuntu Gnome, danke :)
Daveoncode
Auch OK für Centos7 / 3.28, gut zu wissen.
Tonioc
15

Dies funktioniert für mich in Gnome 3.14. Standardinstallation, keine Anpassung.

gnome-screensaver-command --lock
0__
quelle
Es muss in Gnome 3.26.2 installiert sein sudo apt-get install gnome-screensaver.
Rechtes Bein
Hat bei mir nicht funktioniert, gdmläuft nicht, weil ein kürzlich veröffentlichtes Update es kaputt gemacht hat (musste auf sddm umsteigen ...)
Per Lundberg
10

So aktivieren Sie die Bildschirmsperre in Gnome Shell (3.14) mit xscreensaver (unter Debian):

(Hinweis: Obwohl das gnome-screensaverPaket derzeit auf Debian Sid existiert, scheint es nicht verwendbar zu sein.)

  1. Installieren Sie das xscreensaverPaket (und optional xscreensaver-data und xscreensaver-data-extra)
  2. Führen Sie aus xscreensaver, um den Bildschirmschoner wie gewünscht zu konfigurieren. Stellen Sie sicher, dass Sie "Bildschirm nach 0 Minuten sperren" auswählen.
  3. Wählen Sie in den GNOME-Tastatureinstellungen die Registerkarte "Verknüpfungen" und dann "Benutzerdefinierte Verknüpfungen".
  4. Klicken Sie auf die Schaltfläche + und geben Sie den gewünschten Namen und xscreensaver-command -lBefehl ein. OK klicken.
  5. Klicken Sie auf "Deaktiviert" und geben Sie die Tastenkombination ein, mit der Sie den Bildschirm sperren möchten (meine ist Strg-Alt-L). Stellen Sie sicher, dass dies nicht mit der GDM-Verknüpfung "Bildschirm sperren" unter "System" in Konflikt steht.
  6. Viel Spaß mit Ihrem abschließbaren Bildschirm.

Warnung: Benachrichtigungs-Popups werden weiterhin über dem gesperrten Bildschirm angezeigt. Wenn dies ein Problem für Sie ist, müssen Sie eine andere Lösung wie die LightDM Lock Screen- Erweiterung finden.

Joel Cross
quelle
1
Vielen Dank für die Bereitstellung dieser Option. Dies ist die einzige, die in Gnome 3.14.1 auf Debian Jessie
sanimalp
Seit ich diese Antwort geschrieben habe, habe ich eine andere Option entdeckt, die die Verwendung umfasst mate-screensaver(im Wesentlichen dieselbe wie beim alten GNOME-Bildschirmschoner). Dies erfordert das Schreiben eines gefälschten Sitzungsmanagers (wie hier beschrieben ).
Joel Cross
4

Eine in Debian, Ubuntu und Rhel7 erfolgreich verwendete Problemumgehung besteht darin, ein kurzes Python-Skript zu erstellen, das automatisch gestartet wird, wenn Sie sich bei der Gnome-Sitzung anmelden. Beachten Sie, dass in rhel7 die Tastenkombination zum Sperren super + l ist .

Erstellen Sie /etc/xdg/autostart/gscreenlock.py wie folgt :

#!/usr/bin/python

import dbus
import dbus.service
import dbus.glib
import gobject
import os

class ScreenDbusObj(dbus.service.Object):
    def __init__(self):
        session_bus = dbus.SessionBus()
        bus_name=dbus.service.BusName("org.gnome.ScreenSaver",bus=session_bus)
        dbus.service.Object.__init__(self,bus_name, '/org/gnome/ScreenSaver')

    @dbus.service.method("org.gnome.ScreenSaver")
    def Lock(self):
        os.system( "xscreensaver-command -lock" )


if __name__ == '__main__':
    object=ScreenDbusObj()
    gobject.MainLoop().run()

Dann mach es ausführbar:

chmod a+rx /etc/xdg/autostart/gscreenlock.py

Und editiere /etc/xdg/autostart/gscreenlock.desktop wie folgt :

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=gscreenlock
TryExec=/etc/xdg/autostart/gscreenlock.py
Exec=/etc/xdg/autostart/gscreenlock.py
NoDisplay=true
NotShowIn=XFCE;KDE;
Comment=Allows screen locking in gnome
aseq
quelle
2

Die Bildschirmsperre wurde von gnome-screensaverbis zu GNOME 3.8 übernommen. Die Anwendung wurde vom GNOME-Team als veraltet eingestuft und die Funktionalität wurde auf Gnome-Shell, Gnome-Session und GDM aufgeteilt.

Wenn Sie nur die Dinge zum Laufen bringen wollen, haben Sie vielleicht mehr Glück mit xscreensaver.

slm
quelle
2

@jcsanyi gab eine Hintergrunderklärung, wie es funktioniert.

Für diejenigen, die GDM3 aus verschiedenen Gründen nicht verwenden können (zB wegen dieses Fehlers ) und auf LigthDM umgestellt haben, gibt es einen Befehl, mit dem wir den Bildschirm sperren können (möglicherweise funktioniert es auch mit anderen DM, habe ich nicht geprüft aber):

dm-tool lock

Um es bequemer zu machen, gehen Sie settings -> Keyboard -> Scroll to the bottom -> Click "+" button -> Create new custom shortcut using the command aboveso.

Bildbeschreibung hier eingeben

Um eine Super+LKombination zu verwenden, müssen Sie möglicherweise eine vorhandene Systemverknüpfung Lock screeneiner anderen Kombination zuweisen.

Johnny Doe
quelle
Dies funktionierte für mich auf Fedora 30 Gnome 3.32.2. Aber ich frage mich, warum auf meinem Fedora Lightdm anstelle von GDM als Standard-Display-Manager ausgeführt wird und an welches Programm die Standard-Tastenkombination für den Sperrbildschirm Super+Lgesendet wird, da sie in den Einstellungen vorhanden ist, aber ohnehin nicht funktioniert.
Ivan Huang
2

Diese Antwort basiert auf Fedora 30 GNOME 3.32.2

Bei Linux-Desktops ist Super-Loder normalerweise die Standard-Tastenkombination für das Sperren des Bildschirms Ctrl-Alt-L. Aber manchmal funktionieren sie möglicherweise nicht und Sie können keine Möglichkeit finden, den Bildschirm zu sperren. Dies hängt damit zusammen, welchen Display Manager das Gerät gerade ausführt. Sie können dies überprüfen, indem Sie ausführen $ systemctl status display-manager. Wenn dies gdmangezeigt wird, sollte die Standardverknüpfung funktionieren, da diese Verknüpfung von GDM - GNOME Display Manager verwaltet wird. Es gibt auch andere Arten von Display - Managern wie lightdm, sddm, lxdm, kdm, und xdm. Die Standardverknüpfung funktioniert möglicherweise nicht, wenn Sie eine davon ausführen. Sie können jedoch jederzeit versuchen, die Sperre durch Ausführen zu aktivieren. $ dm-tool lockWenn dies funktioniert, können Sie eine benutzerdefinierte Verknüpfung für diesen Befehl hinzufügen. Möglicherweise möchten Sie zu einem anderen Anzeigemanager wechseln, z. B. von lightdmnachgdmund wenn ja, wie folgt:

$ dnf install gdm
$ systemctl disable lightdm
$ systemctl enable gdm
$ reboot
Ivan Huang
quelle
0

Die Standardverknüpfung lautet Shift+Ctrl+Alt+Lock.

Sie finden diese und können sie über die Registerkarte "Verknüpfung" in der App "Tastatur" bearbeiten.

Roopak A Nelliat
quelle
Zeige Kommentare. Msgstr "Die Verknüpfung ist auf Strg + L gesetzt - aber das macht nichts."
Sourcejedi
Wenn Ihre Antwort lautet, dass dies in Fedora Version X wieder funktioniert, auch wenn XDM anstelle von GDM verwendet wird, müssen Sie angeben, wie diese Fedora-Version lautet :). Hallo und herzlich willkommen bei StackExchange.
Sourcejedi
0

Ich habe eine Problemumgehung gefunden, die auf Debian Buster mit GNOME Shell Version 3.30 und mit Lightdm funktioniert. Ich habe keine Ahnung, ob dies irgendetwas kaputt macht, aber ich habe nichts Ungewöhnliches bemerkt.

  1. Installationspaket cinnamon-screensaver
  2. Zu Startanwendungen /usr/bin/cinnamon-screensaverhinzufügen
  3. Erstellen Sie eine Tastenkombination für den Befehl: cinnamon-screensaver-command -l
yigitdnz
quelle