启动时自动屏幕锁定已被应用程序阻止

启动时自动屏幕锁定已被应用程序阻止

我正在运行 Ubuntu 20.04 LTS,并尝试设置我的系统,以便它将自动登录我的单个用户,但在启动时使用锁定的屏幕保护程序以确保安全。

我已经按照这里的解决方案自动登录和屏幕锁定并创建了文件 ~/.config/autostart/screen_lock.desktop,内容如下:

[Desktop Entry]
Type=Application
Name=Lock Screensaver
Exec=gnome-screensaver-command -l

启动时我自动登录但收到桌面消息:无法锁定:锁已被应用程序阻止

跑步

gnome-screensaver-command -l

在终端中手动操作可以正常工作。我查看了 journalctl,但似乎只能找到与桌面上显示的相同的错误:gnome-shell[1518]: 错误:无法锁定:锁定被应用程序阻止

除了屏幕保护程序之外即时启动SSH 密钥代理作为启动应用程序,我有一些 crontab 作业运行 Python 和 bash 脚本,但这些都应该是后台工作,我无法弄清楚是什么导致了问题。我可以看到其他人在使用全屏应用程序和虚拟机时遇到锁屏问题,但这个问题在启动时就出现了,没有(据我所知)运行有问题的应用程序。

有什么想法可以找出问题的原因或解决方法吗?

答案1

如果它可以从 CLI 工作,那么这可能是一个竞争条件,因此您可以尝试在命令前面放置一个 sleep。

我会尝试sleep 60;gnome-screensaver-command -l首先确保登录过程已全部完成。如果可行,那么您可以尝试sleep 1,然后进行实验以找到其工作和锁定速度之间的平衡。

答案2

我之前运行的是 18.04,并且使用自动登录和屏幕锁定但升级到 20.04 后,遇到了与 OP 相同的问题。屏幕保护程序在通过 CLI 和 Super+L 手动触发时有效,但在通过自动启动程序自动登录后无效(得到了相同的被应用程序阻止错误,或者有时根本没有任何内容)。

使用@lcd 的想法,我无法得到

[Desktop Entry]
Type=Application
Name=Lock Screensaver
Exec=sleep 60;gnome-screensaver-command -l

处理 中的条目~/.config/autostart/。它似乎没有触发,因为 中没有它的证据journalctl

起作用的是自动启动一个调用的 bash 脚本gnome-screensaver-command -l。我尝试sleep在不使用命令的情况下调用它,结果在中出现了以下条目journalctl,这表明@lcd 的说法是正确的,存在某种竞争条件:

Jan 20 14:37:47 PC gnome-screensav[1735]: unable to send message: Timeout was reached
Jan 20 14:37:47 PC gnome-screensav[1735]: Did not receive a reply from the screensaver.

所以我目前的解决方法是:

/home/user/.config/autostart/bootscript1.sh.desktop 包含:

[Desktop Entry]
Type=Application
Name=Lock Screensaver
Exec=/home/user/keeps/bootscript1.sh

哪里bootscript1.sh

#!/bin/bash

sleep 1 
gnome-screensaver-command -l

相关内容