현재 상황
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