web-dev-qa-db-ja.com

アイドル時のラップトップキーボードバックライトの自動調光

Windows 10では、ラップトップのキーボードのバックライトは、1分ほど操作がないと自動的にオフになりました。活動が発生するとすぐに、彼らは元に戻りました。

Ubuntuで、次を実行すると

echo <0-3> | Sudo tee /sys/class/leds/asus::kbd_backlight/brightness 

これは、調光/明るさの増加に有効です(0がオフ、3が最も明るい)。

システムが1分間アイドル状態になったときに上記を自動的に実行し、アイドル状態から戻ったときに再実行する方法はありますか?

ありがとう。

3
Click Upvote

するべきこと

  1. xprintidleをインストールして、現在のアイドル時間(キーボードイベントとマウスイベントがないことで定義される)を追跡します。
  2. 小さなバックグラウンドスクリプトを作成します(以下を参照)。スクリプトを空のファイルにコピーし、dim_keyboard.shとして保存します。 スクリプトを実行可能にします、権限のないユーザーがスクリプトを変更できない場所にコピーします(例:/usr/local/bin)。
  3. sudoersを指定してコマンドを実行するため、スクリプトをSudoファイルに追加します。行を追加します。

    <username> ALL= NOPASSWD: /path/to/your/script
    

    <username>はユーザー名)をファイルに追加します(例: ここ


NBsudoersファイルでは、セキュリティ上の理由から、常にフルパスを使用してください$PATHにある場合も、スクリプトに。その理由は、Sudo特権で、おそらくは悪意のあるコードで実行できる~/binに同様の名前のスクリプトを配置するのが簡単だからです。


  1. テストとして、アイドル時間(秒単位)を引数としてスクリプトを実行します。

    Sudo /path/to/script.sh 60
    

    1分後にバックライトを暗くするには

  2. すべてが正常に機能する場合は、スタートアップアプリケーションに追加します:ダッシュ>スタートアップアプリケーション>追加。コマンドを追加します。

    Sudo /path/to/script.sh 60
    

スクリプト:

#!/bin/bash

let "div = 1000"
let "limit = $1"
dimmed=false
cmd=/sys/class/leds/asus::kbd_backlight/brightness

while true
do
  sleep 2
  let "idle = $(xprintidle)"
  if [ $(($idle / $div)) -gt $limit ] && [ $dimmed == false ]; then
    echo 0 | tee $cmd 
    dimmed=true
  Elif [ $(($idle / $div)) -le $limit ] && [ $dimmed == true ]; then
    echo 3 | tee $cmd 
    dimmed=false
  fi
done
5
Jacob Vlijm