いままでのこと
  • Home
  • About
  • Categories
  • Tags
  • Archives

acpid を使ってサスペンド

ノート PC のモニタ開閉時に acpid を使ってサスペンド/復帰する設定を行いました。

  • ThinkPad X60
  • Debian GNU/Linux wheezy

はじめに

acpid では ACPI イベントを捕捉して、それに応じたアクションを実行できます。

シンプルな仕組みで、設定も簡単。動作は自由に定義できるので便利です。

acpid については以下のサイトに詳しいです。

  • Acpid - ArchWiki
  • りぬーめも Arch Linux on S101: acpiの仕組みとか

イベントの確認

イベントは acpi_listen コマンドで確認できます。

acpi_listen コマンドを実行してノート PC のモニタをパタパタさせてみたところ、lid イベントが発生していることが確認できました。

$ acpi_listen
button/lid LID close
video/switchmode VMOD 00000080 00000000
processor LNXCPU:00 00000081 00000000
button/lid LID open

アクションの定義

イベントに対するアクションは /etc/acpi/events/ 以下で定義します。

$ ls /etc/acpi/events/
ac                    lenovo-undock          thinkpad-volume-up
asus-brightness-down  lidbtn                 tosh-battery
asus-brightness-up    panasonic-lockbtn      tosh-hibernate
...

定義は非常にシンプルです。

$ cat /etc/acpi/events/sleepbtn
event=button[ /]sleep
action=/etc/acpi/sleep.sh

event には捕捉したいイベントを識別する文字列を指定。正規表現も使えるようです。action にはイベントが発生した際に実行するコマンドを指定。

設定してみる

ノート PC のモニタを閉じたときにサスペンドさせる設定を追加してみます。

イベントは acpi_listen コマンドで確認したところ、モニタを閉じたときに button/lid LID close が発生しているので、それを捕捉します。

アクションは自分でスクリプトを用意することもできますが、/etc/acpi/ に様々なスクリプトが用意されていたので、今回はこれを使いました。

設定が終わったら acpid を再起動します。

$ sudo nano -wk /etc/acpi/events/thinkpad-suspend
event=button[ /]lid LID close
action=/etc/acpi/sleep.sh
$ sudo /etc/init.d/acpid restart

これで設定完了。

ノート PC のモニタを閉じるとちゃんとサスペンドされました。

画面がロックされない

サスペンドはできたものの、なぜか画面のロックがされず、なんだか気持ちが悪い状態。

アクションとして指定した /etc/acpi/sleep.sh を見てみると、xscreensaver の起動を確認し、起動されている場合には xscreensaver-command -lock を実行するようになっていました。サスペンド自体は pm-utils の pm-suspend で実現されています。

なので xscreensaver を立ち上げておけばオッケー。

Comments
comments powered by Disqus

  • « Guacamoleでウェブブラウザからデスクトップ環境を使ってみた
  • Linux 3.x の仮想マシンから VMware Fusion の共有フォルダが見えない »

Published

Aug 20, 2011

Category

Computing

Tags

  • Debian 6
  • Linux 8

SNS

Tweet
このエントリーをはてなブックマークに追加
  • Powered by Pelican. Theme: Elegant by Talha Mansoor