ユーザーのやり取り(マウスの動き、キーストロークなど)が検出されたら、コマンドを実行します。

ユーザーのやり取り(マウスの動き、キーストロークなど)が検出されたら、コマンドを実行します。

一定期間アクティビティがない場合は、明るさを最小限に抑えてユーザー操作(マウスまたはキーボード)を検出すると、前の明るさに戻るbashスクリプトを作成しようとします。私はxautolockを使って最初の部分を実行する方法を知っていますが、2番目の部分はわかりません。ありがとう

答え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定期的にポーリングの頻度に応じて、ユーザー入力とスクリプト応答の間に遅延が発生します。

関連情報