当用户闲置一段时间后,如何配置 XFCE(或 X 本身或其他)来运行自定义命令?

当用户闲置一段时间后,如何配置 XFCE(或 X 本身或其他)来运行自定义命令?

从我记事起,使用屏幕保护程序锁定屏幕就一直效果不佳。一直存在的问题是,当我移动鼠标或按下某个键时,屏幕保护程序消失,屏幕可见,然后一秒钟过去,只有在它之后才会出现锁定屏幕 - 这看起来和感觉就像一个错误,并且可能非常不可取如果您不想让其他人看到您离开办公桌后正在做什么。

现在,当我安装了最新的 Xubuntu 和 XFCE 4.12 时,还有另一个问题(除了上面描述的第一个问题之外):它要么根本不锁定屏幕,要么锁定屏幕两次(所以我必须输入密码两次解锁它)

第一个问题已经讨论过很多次了,但到目前为止似乎还没有人找到解决方案。

但昨天无意中发现了:

调用xscreensaver-command -lock启动屏幕保护程序,锁定屏幕并以正确的方式执行 - 如果以这种方式启动,当屏幕保护程序消失时,桌面不会暴露。

所以我想禁用桌面环境/显示管理器本机屏幕保护程序/锁屏管理功能并让它只是在我离开时运行我定义的命令,就这么简单,相当“unix way”-ish。如何才能实现这一目标?

答案1

我想到的方法是一个无限循环 bash 脚本,它检查空闲时间并运行锁定命令(如果它尚未运行)。这不适用于 xscreensaver,因为它是客户端/服务器模型,但由于您在问题中提到了“自定义命令”,所以我冒昧地使用了非常简单的 screenlocker slock。

您需要安装两个软件包才能使其工作。xprintidleslock。两者都可以在 apt 中找到。

将以下脚本放置在某处并使其可执行。根据需要调整 LOCK。 600000 = 10 分钟。

#!/bin/sh
DISPLAY=":0"
# in ms
LOCK=600000
while :
do
  IDLE=$(xprintidle)
  if [ $IDLE -gt $LOCK ]; then
    slock
  fi
  sleep 1
done

根据 this arch wikihttps://wiki.archlinux.org/index.php/Xfce#Startup_applications您可以将脚本添加到您的启动中,如下所示:

要在 Xfce 启动时启动自定义应用程序,请单击应用程序菜单设置 > 设置管理器,然后选择会话和启动选项并单击应用程序自动启动选项卡。您将看到启动时启动的程序列表。要添加条目,请单击“添加”按钮并填写表单,指定要运行的可执行文件的路径。

您当然需要确保禁用 xscreensaver。

编辑:最初我在后台运行 slock 并使用 pgrep 来查看进程是否正在运行。我意识到这是不必要的,只是允许 slock 成为一个阻塞进程。相应地改变了。

相关内容