Gマイナー志向

とくに意味はありません

ノートPCのモニター明るさ調整はxbacklightが今のトレンド

手元のLet's note CF-Y7A(Gentoo Linux)にPanasonic Hotkey driverをインストールすると、Hotkeyは認識するのだが、brightnessを変更しても全く反映されなかった。

色々調べたところ、xbacklightで明るさ調整をするのが今のトレンドのようだ。CF-Y7A(Intel 965GM)でもxbacklightで明るさ調整ができるようになった。素晴らしい。
今までLinuxで明るさ調整ができなかった方は是非お試しあれ。

参考:Graphics & Displays LCD backlight - LessWatts.org

Gentooであれば、x11-apps/xbacklightがあるので以下のコマンドでOK。

# emerge xbacklight

明るさは百分率で指定すれば良い。

$ xbacklight -set 80
$ xbacklight -set 20

他にも今よりも○○%下げる、等の指定が可能。詳しくはxbacklight --helpやmanを参照。

デメリットはX環境でしか動かないこと。でもまぁノートPC環境でXを動かしてないってのはあまり考えにくいのでいいでしょう。

今やHotkeyの取得はPanasonic Hotkey driverがなくてもカーネルのCONFIG_ACPI_VIDEOがあれば可能。acpidでちょこちょこっと書けばHotkeyによる明るさ調整もすぐ実装できる。
/etc/acpi/default.shに明るさ調整のHotkeyを追加したサンプルはこちら。かなり手抜きですが。

#!/bin/sh
# Default acpi script that takes an entry for all actions

set $*

# Take care about the way events are reported
ev_type=`echo "$1" | cut -d/ -f1`
if [ "$ev_type" = "$1" ]; then
	event="$2";
else
	event=`echo "$1" | cut -d/ -f2`
fi


case "$ev_type" in
    button)
        case "$event" in
            power)
                logger "acpid: received a shutdown request"
                /sbin/init 0
		break
                ;;
             *)
                logger "acpid: action $2 is not defined"
                ;;
        esac
    ;;
    video)
        case "$event" in
            DD02)
                case "$3" in
                    00000087)
                        logger "acpid: brightness down"
                        /usr/bin/xbacklight -d ":0.0" -10
                        break
                        ;;
                    00000086)
                        logger "acpid: brightness up"
                        /usr/bin/xbacklight -d ":0.0" +10
                        break
                        ;;
                     *)
                        logger "acpid: function $3 is not defined"
                        ;;
                esac
            ;;
             *)
                logger "acpid: action $2 is not defined"
                ;;
        esac
    ;;
    *)
        logger "ACPI group $1 / action $2 is not defined"
        ;;
esac

ただし、xhost等でアクセス権限を設定してやらないと多分意味がない。もっと良いやり方はないものか。
00000087や00000086は環境によって異なるかもしれない。acpidのログを確認しながら適宜調整すれば良い。