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

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

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

我正在运行带有 Gnome Shell 3.8.3 和 XDM 1.1.11 的 Fedora 19。

我使用 XDM 是因为 GDM 中的 XDMCP 支持被破坏 - 但在升级到 Fedora 19 之前,我确实有锁定选项,即使在使用 XDM 时也是如此。

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

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

答案1

经过一番研究,我认为我已经获得了足够的信息来回答我自己的问题。

在 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

答案2

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

答案3

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

gnome-screensaver-command --lock

答案4

我在 debian、ubuntu 和 rhel7 中成功使用的一个解决方法是创建一个简短的 python 脚本,当您登录 gnome 会话时该脚本会自动启动。请注意,在 rhel7 中,锁定的组合键是超级+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

相关内容