没有GDM的情况下如何在Gnome 3中锁定屏幕?


50

用户菜单中没有显示“锁定”选项,并且标准快捷键(Ctrl+ LCtrl+ Alt+ L)不执行任何操作。

我正在使用Gnome Shell 3.8.3和XDM 1.1.11运行Fedora 19。

我之所以使用XDM,是因为GDM中对XDMCP的支持中断了-但是在升级到Fedora 19之前,即使使用XDM时,我也确实具有锁定选项。

我已经发布了反映我自己研究结果的答案。基本上说,如果不运行GDM,就不可能将屏幕锁定集成到Gnome 3.8中。

我真的希望有一个更好的答案-因此,如果有任何我可以忽略的方法,请添加您自己的答案。


1
尝试Ctrl + Alt + L。它行得通吗?
m0nhawk

1
@ m0nhawk不,这也不起作用。我更新了问题以反映这一点。
jcsanyi

奇怪,对我有用。在“设置”-“键盘”-“快捷方式”-“系统”中设置了Lock screen什么?
m0nhawk

没有GDM的Gnome 3.8上的@ m0nhawk?
jcsanyi

2
@ m0nhawk快捷方式设置为Ctrl + L-但这没有任何作用。
jcsanyi

Answers:


38

经过一番研究,我认为我有足够的信息来发布对自己问题的答案。

在Gnome Shell 3.6和更早版本中,存在旧gnome-screensaver程序,如果GDM未运行,gnome-screensaver则将被调用-允许您锁定屏幕。

从Gnome Shell 3.8(包含在Fedora 19中)开始,gnome-screensaver支持已被完全删除。这样做有以下三个原因:降低了代码复杂度,加上屏幕保护程序被视为不需要的功能,以及最终迁移到Wayland的事实要求在合成器中需要屏幕保护程序,锁定等支持。

因此,锁定屏幕的唯一Gnome集成方法是运行GDM,它将响应dbus消息,告诉它锁定屏幕。其他显示管理器(例如XDM)尚未设计为响应此dbus消息,因此无法锁定屏幕。


从此链接

在旧版本的gnome中,命令gnome-screensaver-command -l将锁定您的屏幕。由于gnome 3.8中不再包含gnome-screensaver,因此您现在必须发送dbus呼叫。我认为这是由GDM处理的。

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

2
感谢@slim,但是您编辑的命令实际上不会执行任何操作,除非您正在运行GDM-它们无助于回答问题。
jcsanyi 2014年

2
当然,如果该站点消失了,我仍然想看看引入的链接的内容。
slm

@苗条的好点。我将内容编辑为引号。
jcsanyi 2014年


15

这在Gnome 3.14中对我有效。标准安装,无需定制。

gnome-screensaver-command --lock

它需要安装在Gnome 3.26.2中,因此,如果没有它,sudo apt-get install gnome-screensaver
右腿

对我不起作用,gdm因为最近的更新使它无法运行而无法运行(不得不切换到sddm ...)
Per Lundberg

10

如何使用xscreensaver(在Debian上)在Gnome Shell(3.14)中启用屏幕锁定:

(注意:尽管该gnome-screensaver软件包当前存在于Debian sid上,但似乎不可用)

  1. 安装xscreensaver软件包(以及可选的xscreensaver-data和xscreensaver-data-extra)
  2. 运行xscreensaver以配置屏幕保护程序所需的方式。确保选择“ 0分钟后锁定屏幕”。
  3. 在GNOME键盘设置中,选择“快捷方式”标签,然后选择“自定义快捷方式”
  4. 单击+按钮,然后输入所需名称和xscreensaver-command -l命令。单击确定。
  5. 单击“禁用”,然后键入您想要锁定屏幕的组合键(我的是Ctrl-Alt-L)。确保这与“系统”下的GDM“锁定屏幕”快捷方式没有冲突。
  6. 享受可锁定的屏幕。

注意:通知弹出窗口仍将在锁定屏幕上可见。如果您遇到问题,则需要找到其他解决方案,例如LightDM Lock Screen扩展。


1
感谢您提供此选项。这是唯一在Debian Jessie上的Gnome 3.14.1中为我工作的人
sanimalp

自从我写了这个答案以来,我发现了一个涉及使用的不同选项mate-screensaver(基本上与旧的GNOME屏幕保护程序相同)。这要求写一个假的会话管理器描述这里)。
乔尔·克罗斯

4

我在debian,ubuntu和rhel7中成功使用的变通方法是创建一个简短的python脚本,当您登录gnome会话时,该脚本会自动启动。请注意,在rhel7中,用于锁定的键组合为super + l

像这样创建/etc/xdg/autostart/gscreenlock.py

#!/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()

然后使其可执行:

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

并像这样编辑/etc/xdg/autostart/gscreenlock.desktop

[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

2

屏幕锁定一直处理gnome-screensaver到GNOME 3.8。GNOME团队已弃用该应用程序,并且已将其功能划分为gnome-shell,gnome-session和GDM。

如果您只是想让事情顺利进行,则可以使用xscreensaver


2

@jcsanyi对其工作原理进行了背景说明。

对于那些由于各种原因而无法使用GDM3的人(例如,此bug)并切换到LigthDM,有一条我们可以用来锁定屏幕的命令(可能它也可以与其他DM一起使用,我没有虽然检查):

dm工具锁

为了使其更加方便,请 settings -> Keyboard -> Scroll to the bottom -> Click "+" button -> Create new custom shortcut using the command above像这样。

在此处输入图片说明

要使用Super+L组合,您可能必须将现有系统Lock screen快捷方式重新分配给其他组合。


这在Fedora 30 Gnome 3.32.2上对我有用。但是我不知道为什么我的Fedora将lightdm用作默认的正在运行的显示管理器而不是GDM,并且默认锁定屏幕快捷方式Super+L发送到哪个程序,因为它存在于“设置”中,但仍然无法正常工作。
伊万·黄

2

该答案基于Fedora 30 GNOME 3.32.2

对于Linux台式机,通常用于锁定屏幕的默认快捷键为Super-LCtrl-Alt-L。但有时它们可​​能无法正常工作,您无法找到锁定屏幕的方法。这与机器当前正在运行的显示管理器有关。您可以通过运行进行检查$ systemctl status display-manager。如果看到,gdm则默认快捷方式应该起作用,因为该快捷方式由GDM-GNOME显示管理器处理。还有其他类型的显示管理器如lightdmsddmlxdmkdm,和xdm。如果您正在运行默认快捷方式之一,则可能无法使用。但是,您始终可以尝试通过运行锁定$ dm-tool lock,如果可以运行,则可以为此命令添加自定义快捷方式。您可能要切换到另一个显示管理器,例如,从lightdmgdm,如果需要,请执行以下操作:

$ dnf install gdm
$ systemctl disable lightdm
$ systemctl enable gdm
$ reboot

0

默认快捷方式是Shift+Ctrl+Alt+Lock

您可以找到它,然后使用“键盘”应用程序中的“快捷方式”选项卡进行编辑。


看评论。“快捷方式设置为Ctrl + L-但这没有任何作用。”
sourcejedi

如果您的答案是即使在使用XDM而不是GDM的情况下,它也已在Fedora X版本中再次开始工作,则需要指定该Fedora版本是:)。嗨,欢迎来到StackExchange。
sourcejedi

0

我想出了一种在GNOME Shell 3.30版和Lightdm上的Debian Buster上适用的解决方法。我不知道这是否会破坏任何东西,但我没有发现任何异常。

  1. 安装套件 cinnamon-screensaver
  2. 添加/usr/bin/cinnamon-screensaver到启动应用程序
  3. 为命令创建键盘快捷键: cinnamon-screensaver-command -l
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.