cer*_*cem 3 screensaver vlc fullscreen
我在闲置 30 分钟后挂起我的笔记本电脑。我在此脚本中使用此代码来检测空闲持续时间。
VLC(我很确定阻止屏幕保护程序运行的任何其他视频播放器)会发送一个周期性信号(每 30 秒)来干扰鼠标/键盘事件,因此屏幕保护程序(因此我的代码)认为“结束达到空闲时间”并且在 VLC 完成播放视频播放列表之前永远不会运行所需的命令。
我通过跟踪offset. 如果扰动很短,我只是把之前的测量值加到offset变量上,这样,主要问题就没有了。但是,我还禁用了 VLC 的“在观看视频时抑制屏幕保护程序”功能。现在我想重新添加此功能。
如何检测 VLC 是否正在播放全屏视频(或更佳地,来自任何播放器的任何“全屏视频状态”),以便仅当应用程序/VLC 处于全屏模式时才能禁用“我的屏幕保护程序”?
您可以使用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
Run Code Online (Sandbox Code Playgroud)
第一个命令使用--maxdepth 0以便仅搜索根窗口。
一个相关的命令是xdotool getdisplaygeometry. 它在手册中没有记录,但在更改列表中有一个提及。请记住,它以表单[Width] [Height]而不是[Width]x[Height]原样返回显示尺寸getwindowgeometry,因此使用它需要进一步处理以进行相等比较。