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

Use*_*ror 6 lock-screen screensaver

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

我已按照此处的解决方案自动登录和屏幕锁定并创建了包含以下内容的文件 ~/.config/autostart/screen_lock.desktop :

[Desktop Entry]
Type=Application
Name=Lock Screensaver
Exec=gnome-screensaver-command -l
Run Code Online (Sandbox Code Playgroud)

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

跑步

gnome-screensaver-command -l
Run Code Online (Sandbox Code Playgroud)

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

除了屏幕保护程序之外,我还有im-laucSSH Key Agent作为启动应用程序,并且我有一些运行 Python 和 bash 脚本的 crontab 作业,但这应该都是背景内容,我无法弄清楚是什么导致了问题。我可以看到其他人在全屏应用程序和虚拟机上遇到锁屏问题,但这在启动时是正确的,没有(据我所知)运行有问题的应用程序。

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

小智 2

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

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


小智 1

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

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

[Desktop Entry]
Type=Application
Name=Lock Screensaver
Exec=sleep 60;gnome-screensaver-command -l
Run Code Online (Sandbox Code Playgroud)

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

起作用的是自动启动一个名为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.
Run Code Online (Sandbox Code Playgroud)

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

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

[Desktop Entry]
Type=Application
Name=Lock Screensaver
Exec=/home/user/keeps/bootscript1.sh
Run Code Online (Sandbox Code Playgroud)

哪里bootscript1.sh

#!/bin/bash

sleep 1 
gnome-screensaver-command -l
Run Code Online (Sandbox Code Playgroud)