观看全屏视频时阻止 xautolock/i3lock

Prevent xautolock/i3lock when watching fullscreen video

我使用 i3 window 管理器

set $Locker i3lock --color=000000 && sleep 1
exec --no-startup-id xautolock -time 5 -locker "$Locker"

在其配置文件中,使其在 5 分钟后锁定。

问题是 5 分钟计时器倒计时,即使我正在播放视频,我绝对不喜欢。 (顺便说一句,我通常使用 mplayer 看电影,但有时我也会使用 qutebrowser 访问流媒体网站。)相反,我想阻止 xautolock 在这样的情况。

我想到的一个可能的解决方案是将第二行更改为

exec --no-startup-id myscript -time 5 -locker "$Locker"

其中 myscript 是一个 bash/whatever script/program 将所有选项传递给 xautolock 只有当我 看一些视频的东西。但是我不知道要用这个假设的脚本检查什么。

一种不需要实现 myscript 中 xautolock 的所有选项的可能方法是将 $Locker 编写为脚本或程序以确定是否满足条件以防止锁定。否则,调用屏幕储物柜:

xautolock -locker should_screen_lock.sh
                                   |
                   Yes <- fullscreen YouTube? -> No
                    |                            |
                  Abort                         Lock

您可以使用 xprop -root 了解 window 管理器中活动 window 的 ID,然后 xprop -id 根据该 ID 查看它是否是 运行正在全屏模式下。

从那里开始,它只是将两者放在一起并调用您的 window 储物柜(在本例中为 i3lock,但您也可以将其作为更高级锁定屏幕的自定义脚本)。

Here's my attempt 正是这样做的。值得注意的是,我没有从 i3 的配置中 运行 xautolock:这是一个 systemd 用户服务。但是,储物柜 (lock_screen.sh) 绑定到键盘,这样我就可以绕过 xautolock,以防我全屏显示某些东西。