ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Debianでターミナルから LCD の明るさを調節

(2017-06-27 初稿 - 2021-05-12 転記 - 2021-11-09 追記)

 

(2021-11-09 追記)

現在、Debian 11 Bullseye を利用しているが問題なく使えている。

(追記終了)

 

先日、Debian 9.0 stretch がリリースされたので、ノートPCにインストールした。
このノートPCは、Debian 8.0 Jessie の頃に一度インストールしたが、うまく動かなかったので、Ubuntuをインストールして使っていた。

Debianをインストールしたとき、できるだけ軽快に動作させたいと思い、デスクトップ環境としてLXDEを選択した。確かに、LXDEは動作が軽快で、スペックの低いわがノートPCにはあっている。

ところが、インストール後、電源を外して使っていたところ、あっと言う間にバッテリー不足に。
原因は、LCDの輝度が最高値になっていたためだった。

そこで、輝度を調節したかったが、筆者のノートPCでは、Fnキーを利用したLCDの輝度の調整ができなかった。BIOSをレガシーモードでインストールしているのが原因かも。
また、残念ながらLXDEにも輝度調整をするアプレットは準備されていない。

そこで、ネットで検索したところ、すばらしいページがあった。多謝。

このページでは3つの方法が記述されているが、筆者が気に入ったのは一番最後のシェルスクリプトで輝度を変更する方法。

さっそくスクリプトをいただいて、使っていたが、現在の設定値を調べるのが面倒で少し改変してみた。

コマンドに引数を付けずに実行すると、現在値と割合が表示される。

 

cat ~/bin/brt
#! /bin/sh
##
# @brief Change LCD brightness
#
#        Change the brightness of the current LCD via command line.
#        You should be a root to run this script.
#
# @usage
#   ./brt value
# 
# @param value 
#    A relative brightness. The max brightness is when value = 100.
#    If value > 100, it is regarded as value = 100. The minimum
#    brightness is set when value = 0. But this means a LCD blackout.
#    Thus, value smaller than 20 is ignored and set value = 20.
#    Non-numeric input is regarded as value = 20. 

# add H.Y
PREFIX="/sys/class/backlight/intel_backlight"

MAX_V=$(cat ${PREFIX}/max_brightness)
CUR_V=$(cat ${PREFIX}/brightness)
CUR_R=$(echo "scale=1; ${CUR_V} * 100 / ${MAX_V}" | bc)

##
usage () {
  echo "usage:" >&2
  echo "   brt value" >&2
  echo "   value is an integer number between 20 and 100." >&2
  echo "   " >&2
  echo "   current brightness is " ${CUR_V}"/"${MAX_V} "=" ${CUR_R} "%" >&2
  exit 1;
}

## No argument, then show usage and exit. 
[ -z "${@}" ] && usage

## Parse the first argument. Non-numeric input is zero.
VALUE=$(echo ${1:?} | awk '{print $1*1}')
[ ${VALUE} -gt 100 ] && VALUE=100
[ ${VALUE} -lt  20 ] && VALUE=20

VALUE=$(echo "${MAX_V} * ${VALUE} / 100" | bc)

echo ${VALUE} | sudo tee ${PREFIX}/brightness >/dev/null

上記を切り取って、~/binの中に brt 等の名前を付けて保存。

chmod +x ~/bin/brt

実行例

引数なしで実行すると、コマンドの使い方と現在の設定値が表示される。

brt
  usage
  brt value
    value is an integer number between 20 and 100.
    
  current vrightness is 625/1562 = 40%

また、10〜100%の割合を引数とすると、その値に設定する。

brt 50

簡単なシェルスクリプトですが、あると重宝だ。
皆さんもぜひどうぞ。(^^)/

関連ページ