コマンドで画面の明るさをコントロールする

Ubuntuで画面の明るさを細かく調節したかったんですが、設定用の標準コマンドがなかったので、簡単なシェルスクリプト(bash)を組んでターミナルから設定できるようにしました。

周りの人に画面を見られるのが好きじゃないので、視線を感じたら即行明るさ1にしてやります。やったぜ。

※システムファイルを扱うので、慎重にどうぞ

こんな感じ

明るさ10に設定。

sudo light pow 10
OK

現在の明るさを確認。

sudo light now
10

明るさは1~200。0は真っ暗なので、範囲に含めません。

sudo light 0
範囲外: 1~200

いくら個人用とはいえ、危険なので数値以外弾く。

sudo light aaa
不正な引数: aaa

設定方法

ディレクトリ移動、スクリプトファイル作成。

cd /usr/local/bin
sudo nano light

スクリプトを記述して保存。これで完了。

#!/bin/bash

# light now
if [ $1 == "now" ]; then
    cat /sys/class/backlight/intel_backlight/brightness
fi

# light pow <1~200>
if [ $1 == "pow" ]; then
    if [[ $2 =~ ^[0-9]+$ ]]; then
        if [ $2 -ge 1 -a $2 -le 200 ]; then
            echo $2 > /sys/class/backlight/intel_backlight/brightness
            echo "OK"
        else
            echo "範囲外: 1~200"
        fi
    else
        echo "不正な引数: ${2}"
    fi
fi

軽い解説

このシステムファイルに明るさが数値で設定されています。基本的にはこれを読み込んだり書き込んだりしてるだけです。

/sys/class/backlight/intel_backlight/brightness

正規表現で0以上の数値のみを許容します。

if [[ $2 =~ ^[0-9]+$ ]]; then

1~200のみを許容します。これは($2 >= 1 -&& $2 <= 200)と同じ意味。

if [ $2 -ge 1 -a $2 -le 200 ]; then

参考

シェルスクリプトは色々と特殊でなかなか慣れない。

The present writer kazz.

関連記事

+メインPCをwindowsからLinuxにして満足している
+ブラウザで動くオンライン対戦リバーシ作ってみた
+socket.ioで簡易チャットアプリ作った
+ラズパイのLEDをブラウザで操作してみた
+傘が必要かをLEDで教えてくれるIoTをESPrで作った