사용자 상호 작용(예: 마우스 움직임, 키 입력)이 감지되면 명령을 실행합니다.

사용자 상호 작용(예: 마우스 움직임, 키 입력)이 감지되면 명령을 실행합니다.

일정 기간 동안 활동이 없으면 밝기를 최소로 낮추다가 사용자 상호 작용(마우스나 키보드)을 감지하면 이전 밝기로 돌아가는 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-sendGetSessionIdleTime다음 메소드를 호출하십시오 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주기적으로 폴링 빈도에 따라 사용자 입력과 스크립트 응답 사이에 지연이 발생합니다.

관련 정보