현재 상황

현재 상황

현재 상황

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

관련 정보