マウスの動きを無視しながらスクリーンセーバーのようにマウスクリックを検出するスクリプト

マウスの動きを無視しながらスクリーンセーバーのようにマウスクリックを検出するスクリプト

1分間ユーザーアクティビティがない場合は、ネットワークカードを切断したいと思います。ここで、非アクティブとは、マウスクリックやホイールスクロールがないと定義されます。マウスの動きは無視されるので、xscreensaverは適切ではなく、xautolockも同様です。コマンドラインでマウスイベントを検出して区別する方法は?

ベストアンサー1

Meuhの指示によると、この「スクリーンセーバー」の実行方法は次のとおりです。

#!/bin/bash
evemu-record /dev/input/event2 |
stdbuf -oL egrep 'EV_KEY|REL_WHEEL' |
(
    ./network_saver.sh   
)

network_saver.shは次のとおりです。

#!/bin/bash
WAIT=5
while [ 1 ]
do
    echo Waiting for $WAIT seconds of mouse button inactivity
    while read -t $WAIT line
    do
        echo -n .
    done
    echo; echo Disabling networking
    nmcli n off
    echo Waiting for a mouse button press
    while read line
    do
        echo -n .
        break;
    done
    echo; echo Enabling networking
    nmcli n on
    # Connect the main nic as soon as possible
    nmcli conn up "Ethernet connection 1" >/dev/null
done

おすすめ記事