« [NetWalker]Twitpicに画像とコメントをアップロードするTwitpicUploader.rb | Main | [iPhone][Jailbreak]iPhone用のmicroSD Text Readerを作ってみた »

2009.09.25

[NetWalker]バッテリー残量をほんのりマシに表示する battwalker.rb

NetWalkerの標準バッテリー残量インジケーターに不満を持っている人は多いのではないでしょうか。

使って10分もするとすぐに表示が黄色くなってしまい、折角バッテリーの持ちがいいのに無用な不安にとらわれてしまいます。
「/proc/battery」をのぞくと各レベルの閾値が設定されていることが読み取れますが、それと表示との間にもずれがあるように思います。

$ cat /proc/battery
7973mV (952) 947:90 892:50 873:20 771:8 770:2 0:2 caution(873:20 - 0) shutdown(770:2) poll:1800sec

ということで、代替となるようなバッテリー残量インジケーターをRuby/Gtkで書いてみました。

Screenshot

更新情報

2009.9.27 Ver.0.4: インジケーター上に残量のパーセンテージを文字で表示するようにしました。

Screenshot

2009.9.26 Ver.0.3: 名前を「battmonwalker.rb」から「battwalker.rb」に変更しました。

@kuromaboさんが自分と同時に同じものを作ろうとされていたということで、その@kuromaboさんが命名していた名前を拝借しました。

@kuromaboさんには後見人として(?)、いろいろ手伝ってもらっています。

Ver.0.3では、残量算出方法を見直して、Ver.0.2よりマシになっていると思います。

インストール

無保証です。

インストールは自分の野良リポジトリからできます。
リポジトリの登録手順、リポジトリからのインストール手順については以下のページを参照してください。

[NetWalker]Twitpicに画像とコメントをアップロードするTwitpicUploader.rb

パッケージ名は「battwalker.rb」です。

Battwalker01

インストールすると「/usr/local/bin/battwalker.rb」として入るので、これを「システム>設定>自動起動するアプリ」に登録します。

Battmonwalker02
▲「システム>設定>自動起動するアプリ」を起動。

Battmonwalker03
▲「追加」ボタンを押します。

Battmonwalker04
▲ダイアログの「名前」には適当な名前を、「コマンド」には「/usr/local/bin/battwalker.rb」と。「説明」も適当に。(画像は名前がbattmonwaker.rbだったときのものです)

Battmonwalker05
▲登録完了。(画像は名前がbattmonwaker.rbだったときのものです)

一度ログアウトして再度ログインすると、通知領域にバッテリー残量インジケーターが表示されると思います。
ruby, libgtk2-rubyに依存しているので、インストールするとそれらも入ります。
(これをdebの中で処理する方法を知っている方教えてください。カレントユーザーディレクトリを知る方法が分かりません)

システム標準のもの、そして battwalker.rb のものとバッテリー残量インジケーターが二つ表示されることになります。
僕は、システム標準のインジケータを消して使ってみてます。

「システム>設定>電源の管理>全般タブ」にある「バッテリー残量がほとんどない時だけアイコンを表示する」を選択すると普段は消えてくれます。

解説

battwalker.rbは「/proc/battery」を読み取って、通知領域のインジケーターとtooltipに反映させるというシンプルなアプリです。
表示の更新は1分に1回実行しています。

インジケーター上にマウスカーソルを持っていくと、tooltipで現在の残量等を表示します。

Gtk::Pixbufにdraw text的な感じのことをして、それをGtk::StatusIconにセットすればいいみたい、というとこまで分かりました。
Ruby/GtkはNetWalkerを入手した日にいじり始めたもんで、よく分かっていません。
やり方が分かったら、そのような感じにする予定です。

「/home/YOUR_NAME/batterylog.txt」として残量のログを記録していきます。
今のところ、ログを切ることはできません。

残量算出の精度とログ、アイコン切り替えテーブルについて

/proc/batteryに現れる電池の残量は、コストダウンのためか電圧を見て検出しているようで、精度がよろしくありません。
何しろ、一度減った残量が増えたりしますから。

システムの負荷が低いと電圧が上がり、負荷が高くなると電圧が下がり、ということが起きているように思います。

またしばらく減らなかったりするようです。
「本来なら電流計によって容量計算をするのだが、電流計を積んでないのではないか」そんな考察が2ちゃんねるでされていました。

tooltipのパーセント表示は、シャットダウンする残量770を下限、僕の環境でフル充電し、ACアダプタを外した直後の残量980を上限として、それを100等分したときに、現在の残量がどこに位置するかで求めています。

電圧が一時的に高くなるACアダプタ接続中は、この関係で残量表示が100%を超えます。
ACアダプタの接続/切断を判定して、パーセント表示を出さないようにしています。

980という数値はスクリプトの中に固定値として書き込んでいますが、本来は環境によって調整すべきでしょうね。

|

« [NetWalker]Twitpicに画像とコメントをアップロードするTwitpicUploader.rb | Main | [iPhone][Jailbreak]iPhone用のmicroSD Text Readerを作ってみた »