데스크톱 시스템에서 지정된 유휴 시간 이후 사용자에게 활동을 알리는 비폴링 방식

데스크톱 시스템에서 지정된 유휴 시간 이후 사용자에게 활동을 알리는 비폴링 방식

이와 비슷한 질문이 이미 많이 있지만 제가 찾을 수 있는 것은 투표 방법을 제안하는 답변뿐입니다(1,2) 아니면 극단적인 해커처럼 보이거나(), 그래서 동일한 질문을 하고 싶지만 솔루션이 폴링을 사용해서는 안 된다는 추가 주의 사항이 있습니다.

내가 찾고 있는 것은 다음 두 가지 이벤트를 수신할 수 있는 Linux 데스크톱 시스템에서 일반적으로 사용할 수 있는(또는 설치하기 쉬운) 일종의 API입니다.

  1. 사용자가 "유휴" 상태 N(마우스를 움직이지 않고, 키보드를 입력하지 않는 등)(여기에서 지정할 수 있음 N)를 유지한 시간(초)입니다.
  2. (1)이 이전에 트리거된 후(그리고 그때만!) 이제 사용자는 일부 활동을 수행했으며 더 이상 유휴 상태로 간주되어서는 안 됩니다. 이 이벤트 후에 (1)이 다시 트리거되어 주기를 반복할 수 있습니다.

(1)의 경우 폴링 없이 발생한다는 것은 나에게 그다지 중요하지 않습니다. 왜냐하면 내 사용 사례에서는 첫 번째 유형의 이벤트에 반응하는 대기 시간 허용 오차가 10초마다 폴링할 수 있을 만큼 충분히 높기 때문입니다. 그러나 이벤트 (2)의 경우 응답은 즉각적이어야 하므로 폴링 방법을 사용하면 약 0.1초마다 폴링해야 하며 이는 용납할 수 없는 CPU 시간 낭비입니다. 1

그래서 나는 (1)이 폴링 같은 것을 제안함으로써 "해결"되었다고 생각 xprintidle하지만, (2)의 정의는 (1)에 달려 있기 때문에 어쨌든 여기에 나열해야 할 것 같습니다.

(2)를 구현하는 API에 대한 아이디어가 있습니까? 화면 보호기 등은 어떻게 이루어지나요?


1 여기에서 동기를 이해하려면 dpms(구성한 10분이 아닌) 10분 10초 후에 화면을 끄는 경우와 활동 감지 후 10초 지연 후 다시 켜는 경우의 느낌을 비교해 보십시오. 내 의견 대부분의 사용 사례는 "유휴 상태가 아닌 감지"보다 "유휴 상태 감지"에 대해 더 큰 관용을 의미합니다.

관련 정보