现在的情况

现在的情况

现在的情况

我在闲置笔记本电脑 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返回,因此使用它需要进一步处理才能进行相等比较。

相关内容