现在的情况
我在闲置笔记本电脑 30 分钟后将其挂起。我正在使用这段代码里面这个脚本检测空闲持续时间。
原始问题
VLC(我很确定任何其他阻止屏幕保护程序运行的视频播放器)会发送一个周期性信号(每 30 秒一次)来干扰鼠标/键盘事件,因此屏幕保护程序(因此我的代码)认为“结束”达到空闲时间”并且在 VLC 完成播放视频播放列表之前永远不会运行所需的命令。
引入问题
我通过跟踪offset
.如果干扰很短,我只需将之前的测量值添加到offset
变量中,这样,主要问题就消失了。不过,我还禁用了 VLC 的“观看视频时抑制屏幕保护程序”功能。现在我想重新添加这个功能。
问题
如何检测 VLC 是否正在播放全屏视频(或更佳地,任何播放器的任何“全屏视频状态”),以便仅当应用程序/VLC 处于全屏模式时才能禁用“我的屏幕保护程序”?
答案1
您可以使用xdotool
来获取根窗口几何形状和 VLC 窗口几何形状。如果它们相等,则 VLC 窗口为全屏。
gRoot=$(xdotool search --maxdepth 0 '.*' getwindowgeometry | grep 'Geometry:')
gActive=$(xdotool getactivewindow getwindowgeometry | grep 'Geometry:')
if [ "$gRoot" = "$gActive" ]; then
echo "The active window is fullscreened."
else
echo "The active window is not fullscreened."
fi
第一个命令--maxdepth 0
仅搜索根窗口。
相关命令是xdotool getdisplaygeometry
.它在手册中没有记录,但在更改列表。请记住,它以表单形式返回显示尺寸,[Width] [Height]
而不是[Width]x[Height]
像那样getwindowgeometry
返回,因此使用它需要进一步处理才能进行相等比较。