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

jcs*_*nyi 57 gnome screen-lock gnome-shell gnome3

有没有“锁”选项显示在用户菜单了,标准的快捷键(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 中。

我真的希望有一个更好的答案可用 - 所以如果有任何我忽略的方法可以做到这一点,请添加您自己的答案。

jcs*_*nyi 42

经过一些研究,我想我有足够的信息来发布我自己问题的答案。

在 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-screensaver 在 gnome 3.8 中不再存在,您现在必须发送 dbus 调用。我认为这是由 GDM 处理的。

$ dbus-send --type=method_call --dest=org.gnome.ScreenSaver \
    /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
Run Code Online (Sandbox Code Playgroud)

  • 谢谢@slim,但是除非您运行 GDM,否则您编辑的命令实际上不会执行任何操作 - 它们无助于回答问题。 (3认同)
  • 当然,我仍然希望看到引入的链接内容,以防该站点消失。 (2认同)

sys*_*ral 20

Super+L适用于运行 Gnome 3.20 的 Fedora 24

  • 这也适用于 ubuntu gnome,谢谢:) (5认同)

0__*_*0__ 15

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

gnome-screensaver-command --lock
Run Code Online (Sandbox Code Playgroud)


小智 12

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

(注:虽然该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扩展程序。

  • 感谢您提供此选项。这是唯一一个最终在 Debian Jessie 上的 Gnome 3.14.1 中为我工作的程序 (2认同)

ase*_*seq 5

我在 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()
Run Code Online (Sandbox Code Playgroud)

然后使其可执行:

chmod a+rx /etc/xdg/autostart/gscreenlock.py
Run Code Online (Sandbox Code Playgroud)

并像这样编辑/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
Run Code Online (Sandbox Code Playgroud)


小智 5

@jcsanyi 给出了其工作原理的背景解释。

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

dm-工具锁

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

在此输入图像描述

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