![사용자 상호 작용(예: 마우스 움직임, 키 입력)이 감지되면 명령을 실행합니다.](https://linux55.com/image/9135/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%83%81%ED%98%B8%20%EC%9E%91%EC%9A%A9(%EC%98%88%3A%20%EB%A7%88%EC%9A%B0%EC%8A%A4%20%EC%9B%80%EC%A7%81%EC%9E%84%2C%20%ED%82%A4%20%EC%9E%85%EB%A0%A5)%EC%9D%B4%20%EA%B0%90%EC%A7%80%EB%90%98%EB%A9%B4%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4..png)
일정 기간 동안 활동이 없으면 밝기를 최소로 낮추다가 사용자 상호 작용(마우스나 키보드)을 감지하면 이전 밝기로 돌아가는 bash 스크립트를 만들려고 합니다. 나는 xautolock을 사용하여 첫 번째 부분을 수행하는 방법을 알고 있지만 두 번째 부분은 모릅니다. 감사해요
답변1
xset dpms
아마도 모니터의 전원 관리 기능을 제공하는 것이 무엇인지 알고 있을 것입니다 .밝은점진적인 백라이트 변경을 수행하지만 충분하지 않은 경우 xinput
다음 방법을 사용하여 유휴 모드에서 움직임을 감지할 수 있습니다.
입력 장치를 나열 xinput
하고 모니터링하려는 마우스 및 키보드 ID를 찾으십시오. 제 경우에는 11시와 9시입니다.
Logitech USB Optical Mouse id=11 [slave pointer (2)]
HID 05f3:0007 id=9 [slave keyboard (3)]
xinput --test
그런 다음 각 ID에 대한 출력을 기다릴 수 있습니다 .
xinput --test 9 | read stuff & pid1=$!
xinput --test 11 | read stuff & pid2=$!
wait -n
kill -hup $pid1 $pid2 2>/dev/null
echo 'ready'
답변2
당신은 사용해 볼 수 있습니다버스. 구체적으로 사용dbus-send
GetSessionIdleTime
다음 메소드를 호출하십시오 org.freedesktop.ScreenSaver
.
dbus-send --session --dest=org.freedesktop.ScreenSaver --type=method_call --print-reply=literal /ScreenSaver org.freedesktop.ScreenSaver.GetSessionIdleTime
그러면 4개의 공백, "uint32", 사용자가 마지막으로 키를 누르거나 마우스를 움직인 이후의 밀리초가 출력됩니다. 다음 명령을 사용하여 번호를 추출할 수 있습니다.cut
주문하다:
echo $result | cut -d ' ' -f 5
이것이 필요하다투표 dbus
주기적으로 폴링 빈도에 따라 사용자 입력과 스크립트 응답 사이에 지연이 발생합니다.