DPMS 在屏幕锁定时暂停

DPMS 在屏幕锁定时暂停

我在笔记本电脑(Acer B115-M)上运行 Xubuntu 20.04。我希望有以下与锁定屏幕和屏幕保护程序相关的行为:

  1. Ctrl+ Alt+ Del,也就是xflock4应该锁定屏幕并将其关闭
  2. 屏幕保护程序应该只关闭屏幕,而不是显示空白屏幕,然后等待一段时间以 dpms 暂停它。

我尝试设置/general/LockCommand哪种xset dpms force suspend方式有效。我暂停了屏幕,但几秒钟后它又恢复了。我确信这有效,因为xset dpms force suspend命令行完全符合我的要求:它暂停显示,如果你触摸一个键,它就会打开,然后直接进入锁定屏幕。

你能帮助我实现我所描述的行为吗?

答案1

如果你设置/general/LockCommand

sh -c 'xfce4-screensaver-command --lock; sleep 0.5; xset dpms force suspend'

(我添加了一点延迟,以便您的鼠标/键盘活动不会立即打开显示。)

答案2

原因是( ++操作/usr/bin/xflock4后面的脚本)不处理 DPMS,如您所见,如果存在则它使用命令,否则它会回退到使用 5 种不同的 *-screensave-command:CtrlAltDel/general/LockCommand

# Wait a bit so that user have time to raise finger from a key if
# the script is run in terminal.
[ -t 0 ] && sleep 1

# First test for the command set in the session's xfconf channel
LOCK_CMD=$(xfconf-query -c xfce4-session -p /general/LockCommand)

if [ -n "$LOCK_CMD" ]; then
    /bin/sh -c "$LOCK_CMD" && exit
    exit_code=$?
    >&2 printf "'%s' exited with status %d\n" "$LOCK_CMD" $exit_code
    exit $exit_code
fi

for lock_cmd in \
    xscreensaver-command \
    light-locker-command \
    xfce4-screensaver-command \
    gnome-screensaver-command \
    mate-screensaver-command
do
    $lock_cmd --lock </dev/null 2>/dev/null && exit
done

# else access locking failed
exit 1

仅仅为了关闭 DPMS而覆盖LockCommand此字段将导致不运行实际的锁定命令,因此会导致奇怪的问题。

/usr/sbin/dpms-then-xflock4我的方法(或解决方法)是使用文件模式 0755(即可执行文件)创建:

#!/bin/sh
/usr/bin/xset dpms force off
exec /usr/bin/xflock4

然后设置Ctrl++Alt和+ L(或任何你喜欢的)来运行此命令,如这张截图:SuperCtrl

键盘 - 应用程序快捷键

一旦按下Ctrl+ Alt+ L,该脚本将首先要求关闭 DPMS,然后要求xflock4完成其余操作(即实际的“锁定”)。

已在我的桌面 Xubuntu 22.04 (XFCE 4.18) 上进行了测试。

我尝试过其他方法,例如将“屏幕保护程序首选项 - 屏幕键盘 - 屏幕键盘命令”设置为,但它并不总是有效,例如,如果您在后台播放 YouTube/Twitch 之类/usr/sbin/dpms-then-xflock4的内容(即播放时屏幕保护程序暂时被禁用)。这是因为Ctrl++仍然先调用,而不是调用“屏幕键盘命令”。AltLxflock4

相关内容