![如何在 Ubuntu 中从屏幕保护程序直接唤醒到登录屏幕](https://linux22.com/image/1233716/%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%20%E4%B8%AD%E4%BB%8E%E5%B1%8F%E5%B9%95%E4%BF%9D%E6%8A%A4%E7%A8%8B%E5%BA%8F%E7%9B%B4%E6%8E%A5%E5%94%A4%E9%86%92%E5%88%B0%E7%99%BB%E5%BD%95%E5%B1%8F%E5%B9%95.png)
(又名如何在不输入密码的情况下切换用户,第二部分)(参见第一部分)
我拥有 Ubuntu 9.10,其中有一个我妻子的用户帐户,还有一个我自己的用户帐户。“从屏幕保护程序唤醒”应该导致“选择用户”没有必须输入任何密码。我知道如何在 Windows 中执行此操作,但我还不擅长使用 Linux(目前)。
部分内容已在我之前的问题它帮助我无需密码即可通过登录屏幕(启动后,选择“切换用户”),但一旦屏幕保护程序启动,我再次唤醒它,系统就不会显示“选择用户”屏幕。相反,它要么关闭屏幕保护程序并显示最近用户的桌面,要么(如果屏幕保护程序设置为锁定屏幕)提示输入用户密码(可以通过单击“切换用户”按钮并再次选择同一用户轻松跳过此操作)。
因此,登录(“选择用户”)屏幕已经处理完毕。如何让(任何)屏幕保护程序在唤醒时返回到登录屏幕,而不是当前用户的桌面?Windows 可以做到这一点,我相信 Linux 也可以 - 但是如何做到呢?
答案1
你正在养成进行奇怪调整的习惯,不是吗?
无论如何,这个问题很奇怪,但很有趣。很抱歉,我没有完整的解决方案,但我发现了一些有趣的东西,值得一提。它们可能会给你一些想法,让你知道接下来该怎么做。
Gnome 屏幕保护程序常见问题解答表示当会话的空闲状态改变时,屏幕保护程序发出 DBus 信号:
有没有办法在屏幕保护程序激活或停用时执行操作?或者在会话空闲时执行操作?
一种方法是观察来自 gnome-screensaver 的 D-Bus 信号。(...)
常见问题解答提供了一个例子dbus 监控命令:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver',member='SessionIdleChanged'"
尽管我相信界面和成员对于 Ubuntu 9.10 来说,详细信息已经过时;正确的值似乎是接口=org.freedesktop.ConsoleKit.Session和成员=IdleHintChanged. (见ConsoleKit 文档。
启用屏幕保护程序锁定后,空闲提示已改变信号发出后密码已成功输入到解锁对话框中。
命令gdmflexiserver-xnest可以从命令行使用以返回登录屏幕。它本身可以在您的 X 会话中运行,但您可以使用dbus 启动从 SSH 会话执行它:
DISPLAY=:0 dbus-launch gdmflexiserver -xnest
这将“激活” GDM 登录屏幕,而无需注销当前用户会话,就像“切换用户...”菜单选项确实如此(至少据我所知)。
诀窍是找到某种方法将这两者结合在一起。在我看来,你想要做的基本上是:
- 禁用屏幕保护程序锁定;
- 使用 DBus 注册一个监听器来监听空闲提示已改变在所有会话上发出信号;
- 让听众执行gdmflexiserver当检测到信号时发出命令。
需要执行步骤 1,这样您就不会收到密码提示。如果步骤 2 正常运行并且步骤 3 启动,则系统退出屏幕保护程序时,您都会看到登录窗口。但步骤 2 是我不确定该怎么做的。
答案2
我知道这个问题是几年前的了,但有些用户可能仍在寻找它。
人们可能更喜欢 Ubuntu 登录屏幕在唤醒时锁定屏幕(例如,甚至不显示加密主页上的壁纸),这在 Ubuntu 12.10 和 13.04 中是可能的(不确定早期版本)。
因此,要做到这一点,请打开Dconf 编辑器(预安装在 Ubuntu 12.10+)并转到:
组织>侏儒>桌面>屏幕保护程序
dbus-launch gdmflexiserver -xnest
输入变量的命令 嵌入式键盘命令.然后检查嵌入式键盘启用对于相同的模式。
答案3
我必须在这里提供我自己的答案,那就是对于我所要求的问题显然没有(简单的)解决方案。
一个办法潜在存在,但并不完整,需要深入理解 Linux - 从第一个答案可以看出。因此,我认为这不是一个现成的答案,不值得接受。
问题:
如何让(任何)屏幕保护程序在唤醒时返回到登录屏幕,而不是当前用户的桌面?
答案:不可以。