読者です 読者をやめる 読者になる 読者になる

スクリーンの明るさが変えられない

いつのカーネルからかわからないんですが、 XPS13 に入れている Ubuntu 13.04 でスクリーンの明るさを変更できなくなりました。ハードキーでも、設定からもです。目盛りは変化するのですが…。デフォルトがマックスブライトなのでまぶしくてしようがない。

調べるとこのバグ、

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/954661

すごい長いことやってる。リグレッションしちゃったりしている。そして結局のところ 13.10 まで治らないらしい…。今は、起動時やスリープからの復帰の際にいちいち

$ echo 0 | sudo tee /sys/class/backlight/intel_backlight/brightness

と打っております。切なし。

で、しばらくこれで使っていたのだけど、今日この記事を書くついでに「スリープ解除のタイミングでスクリプト実行できないもんかなあ」と調べたら見事あった。 /etc/pm/sleep.d/ 。 pm-utils さんが取り仕切ってらっしゃる様子。フック書いて、引数が resume の時だけ動くようにしてみる。フックは root で実行されるからね。と書いてある。上の行そのまま書く。

ばっちりでした。

ちなみにこのスクリプト、「すでに GNOME が deprecated にしちゃった xmodmap を使ってると、スリープ復帰時に解除されちゃう」って問題にも使えるんじゃないかと思い、書いてみたけど動かない。 xmodmap は display が必要っぽい…。って調べたらこれも完璧に対処してらっしゃる方がいて、その通りにしたらばっちりでした。嬉しい嬉しい。

なんで僕が未だに xmodmap 使ってるかって言うと、 GNOME のあの GUI で ctrl の位置を調整するやつだと、 Caps Lock キーを移動しちゃうんですよね。違うんだ。 ATOK 配列が染み付いた日本人は、結構英数キーを使うんだ。英数キーを生かしたまま移動してくれ…。というわけなんです。

結果です。

~/bin/junbikun( juunbikun は gnome-session-properties で自動実行設定)

#!/bin/bash
echo $USER > /var/tmp/pm-utils_user
echo $DISPLAY > /var/tmp/pm-utils_display
xmodmap ~/.Xmodmap

/etc/pm/sleep.d/49_brightness

#!/bin/bash

case $1 in
	hibernate)
		;;
	suspend)
		;;
	resume)
		echo 0 > /sys/class/backlight/intel_backlight/brightness
		;;
	thaw)
		echo 0 > /sys/class/backlight/intel_backlight/brightness
		;;
	*) echo "something machigai."
		;;
esac

/etc/pm/sleep.d/49_xmodmap

#!/bin/bash

function redo_xmodmap {
        PM_USER=$(less /var/tmp/pm-utils_user)
        PM_DISPLAY=$(less /var/tmp/pm-utils_display)
        sudo -u $PM_USER /usr/bin/xmodmap -display $PM_DISPLAY /home/oogatta/.Xmodmap
}

case $1 in
	hibernate)
		;;
	suspend)
		;;
	resume)
		redo_xmodmap
		;;
	thaw)
		redo_xmodmap
		;;
	*) echo "something machigai."
		;;
esac

どうせ自分しか使わないノート PC だしユーザと DISPLAY は決め打ちでも良かったかも…。