我希望我的屏幕在我合上盖子(或以其他方式触发暂停)时自动锁定,但前提是我将其关闭一段时间,例如 5 分钟。也就是说,如果我合上盖子然后在 1 分钟后打开它,我希望屏幕不被锁定,但如果我在 10 分钟后打开盖子,它应该被锁定。有没有办法在 Ubuntu (GNOME) 中进行设置?
我看到了几个类似的问题,但没有一个能描述我正在寻找的内容。我仍然希望笔记本电脑在盖子关闭时立即挂起,我只是不希望它锁定,除非盖子保持关闭一段时间。(理想情况下,它会遵循打开盖子时使用的相同“自动屏幕锁定延迟”设置。)
我可以想象实现这一点的一种方法是在挂起和唤醒时运行脚本。挂起脚本只会记录挂起的时间戳,唤醒脚本会检查时间戳的年龄,并据此决定是锁定还是解锁屏幕。但是,我假设我必须将这些脚本设置为以我的用户(即不是 root)身份运行,并且他们需要能够访问我现有的登录会话(可能是通过一些环境变量?),所以我不是如果这是可以实现的。
我想出了如何做到这一点。我编写了一个 Python 脚本来侦听指示暂停和锁定屏幕的 DBus 信号。当两个信号在彼此的短时间内发生时,脚本假定这是一个触发屏幕锁定事件的挂起事件。然后它等待指示恢复的信号。如果自挂起事件后经过的时间少于 5 分钟,它会强制屏幕保护程序解锁而无需密码。此外,它仅在发送挂起信号时关闭盖子才解锁屏幕(因此推测是由关闭盖子触发的挂起),因此从菜单手动挂起不会触发脚本。这样可以确保屏幕在被用户手动锁定后不会解锁。
你可以在这里找到脚本:https ://gist.github.com/DarwinAwardWinner/77e8acea2f14ed9ea66d7222d7ace500
我将脚本保存在 中
~/.local/bin/
,使其可执行,并将脚本设置为在我使用 Startup Applications 配置程序登录时在后台运行,如下所示:如果脚本因任何原因崩溃,我还使用
run-one-constantly
包自动重新启动脚本。run-one
运行此脚本后,我得到了我想要的行为:如果我合上盖子,一分钟后打开它,屏幕将解锁,而无需我输入密码。但是,如果我将盖子关闭超过 5 分钟,或者如果我在不关闭盖子的情况下暂停笔记本电脑,那么打开盖子时需要输入密码。您可以通过编辑脚本来配置时间限制和盖子要求(查看第 100 行)。在其当前形式中,该脚本仅适用于 GNOME 屏幕保护程序。但是,只要它们提供适当的 DBus 信号和方法,使其适应 KDE 或其他屏幕锁定程序应该不会非常困难。
重要的安全注意事项:我已尽我所能处理我能想到的所有边缘情况,但即使在时间限制到期后,我也总是有可能无法预料到某种触发解锁的方式。因此,如果您担心安全性,请不要使用此脚本,除非您自己花时间审核它。