これに似た質問がすでにたくさんありますが、私が見つけることができるのは投票方法を提案する答えだけです(1、2)または極端なハッカーのように見える(サム)ので、同じ質問をしたいのですが、解決策がポーリングを使用してはならないという追加の注意事項があります。
私が探しているのは、次の2つのイベントを受け取ることができるLinuxデスクトップシステムで一般的に利用可能な(またはインストールしやすい)一種のAPIです。
- ユーザーが「アイドル」状態
N
(マウスを動かさず、キーボードを入力しないなど)(ここで指定できるN
)を維持した時間(秒)です。 - (1)が以前にトリガされた後(そしてその時のみ!)、ユーザーはいくつかのアクティビティを実行し、アイドル状態と見なされるべきではありません。このイベントの後、(1)が再びトリガーされ、サイクルを繰り返すことができます。
(1)の場合、ポーリングなしで発生することは私にとってそれほど重要ではありません。なぜなら、私のユースケースでは、最初の種類のイベントに反応する待ち時間の許容誤差が10秒ごとにポーリングできるほど十分に高いからです。ただし、イベント(2)の場合、応答は即時である必要があるため、ポーリング方法を使用すると約0.1秒ごとにポーリングする必要があり、これは許容できないCPU時間の無駄です。1
だから私は(1)がポーリングのようなものを提案することによって「解決」されたと思いますxprintidle
が、(2)の定義は(1)に依存するので、とにかくここにリストする必要があるようです。
(2)を実装するAPIのアイデアはありますか?スクリーンセーバーなどはどうなりますか?
1ここで動機を理解するにはdpms
(設定した10分ではなく)、10分10秒後に画面をオフにした場合と、アクティビティが検出されてから10秒遅れた後に再びオンになったときの感情を比較してください。私の意見 ほとんどのユースケースは、「アイドル状態ではない検出」よりも「アイドル状態検出」に対して大きな寛容を意味します。