答案1
快速检查源代码当前版本的,表明它不支持此功能,尽管如果您了解一点关于以及如何编写程序xautolock 2.2
的话,自己实现它并不难。C
X
原因可能是这样的:每当您想知道 的状态时xautolock
,您也知道您希望它处于什么状态。因此,xautolock -disable
如果您希望它关闭,则只需发出即可,xautolock -enable
反之则发出。请注意,xautolock
执行此操作不会影响您的所有其他设置。
按照您建议的方式自己跟踪状态也是可能的,但可能有些不可靠且容易出错。
答案2
您可以使用大多数媒体播放器内置的功能来管理它;它可以与xautolock
储物柜有效配合。
--停止屏幕保护程序,--不停止屏幕保护程序 在启动时关闭屏幕保护程序(或屏幕消隐器和类似机制)并将其打开 退出时再次打开(默认值:是)。当播放器播放时,屏幕保护程序始终会重新启用 已暂停。 并非所有视频输出或平台都支持此功能。有时会实施, 但不起作用(在 GNOME 上经常发生)。您也许可以使用以下方法来解决此问题 --heartbeat-cmd 代替。
您可以通过在以下内容中包含该行来启用此功能~/.mpv/config
:
stop-screensaver=yes
并享受不间断的视频播放。
如果您使用的媒体播放器不具备此基本功能,则可以使用简单的包装器来实现相同的效果:
#!/usr/bin/env bash
# wrapper to prevent screen blanking when files are played from ~/Videos
usage() {
printf "%s\n" "Usage: ${0##*/} /path/to/file"
exit 1
}
case $# in
1) if [[ $1 =~ Videos ]]; then
xset dpms 0 0 0
xautolock -disable
vlc "$1"
xautolock -enable
xset dpms 900 900 900
else
usage
fi
;;
*) usage
;;
esac
答案3
我设法按照OP的要求去做,它全部包含在我的i3配置中,绑定到快捷方式(见下文)。因此,我使用 Mod+o 锁定屏幕,然后使用 Mod+Shift+o 切换自动屏幕锁定,其中会出现通知,告诉我“锁定”或“锁定关闭”,具体取决于 xautolock 的“状态”。我用它来xautlock -exit
确定它是否正在运行,而无需在额外的文件中管理状态。
单独处理切换状态的脚本如下所示
if xautolock -exit
then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null
else
notify-send -u normal -t 100 -- 'LOCK on'
xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 100 -- 'LOCKING screen ...'"
fi
根据您调用该脚本的位置,您必须确保xautolock -time ...
在后台运行(例如通过添加&
)。
从我的.i3/config
文件中:
exec --no-startup-id xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 10000 -- 'LOCKING screen'"
bindsym $mod+o exec --no-startup-id xautolock -locknow
bindsym $mod+Shift+o exec --no-startup-id "if xautolock -exit; then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null; else notify-send -u normal -t 100 -- 'LOCK on'; xautolock -time 2 -locker 'slock' -notify 10 -notifier \\"notify-send -u normal -t 100 -- 'LOCKING screen ...'\\"; fi"