Vlc
如何檢測使用者是否正在觀看全屏影片?
現在的情況
閒置 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
第一個命令使用
--maxdepth 0
以便只搜尋根視窗。一個相關的命令是
xdotool getdisplaygeometry
. 它在手冊中沒有記錄,但在changelist中有提及。請記住,它以表單[Width] [Height]
而不是[Width]x[Height]
原樣返回顯示尺寸getwindowgeometry
,因此使用它需要進一步處理以進行相等比較。