MacBookのバッテリ残量をターミナルに表示する

投稿日:

来週の zsh & GNU screen 勉強会のネタとして「iTerm の hardstatus にバッテリ残量を表示できないか」というのを考えていた。
Linux だったら案外簡単で、/proc/acpi/battery あたりにファイルがあるはずなのでその中身を開いて計算すればいいはず。だけど Mac だとなかなかいい方法がなさそう。そもそも /proc は無いし。
軽くググッてみると
mac bookのバッテリー状態をはてなグラフに記録してみよう - mac日記
MacBookのバッテリー残量表示 - みずぴー日記
こんな記事が見つかったくらい。

うーん、system_profiler に -xml オプションをつけて実行、かつその xml を解析はちょっと面倒臭い。
いや待てよ、そういえば Emacs で(display-battery-mode 1)とか書いてやるとモードラインにバッテリ残量が表示されたはず。ということで Emacs から <f1>-v して display-battery-mode のヘルプを表示。

Emacs

battery.el に書いてあるようなので battery.el を見る。

battery.el

いた! ふむふむ、pmset というのを使って取得とな。

"Get battery status information using `pmset'.
he following %-sequences are provided:
%L Power source (verbose)
%B Battery status (verbose)
%b Battery status, empty means high, `-' means low,
   `!' means critical, and `+' means charging
%p Battery load percentage
%h Remaining time in hours
%m Remaining time in minutes
%t Remaining time in the form `h:min'"

そんなコマンドがあるとはしらなかったので、 man pmset してみる。

man pmset

なるほど、pmset -g ps で知りたい情報が取得できそうだ。
やってみよう。

pmset -g ps

できた。バッテリの残量が90%で、残りが3時間18分だということが分かる。ターミナルにこれを表示するには screen で backtick を使えば良さそう。

こんな感じのスクリプトを作成して、

.screenrc に bucktick の記述を追加してやる。

showing HW statuses on hardstatus

できた。