用户菜单中没有显示“锁定”选项,并且标准快捷键(Ctrl+L或Ctrl++ )不执行任何操作。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