まったりいんふぉまてぃくすめもらんだむ

主にプログラミング関係のメモに使うかもしれないしそうでないかもしれない

VMWare上のUbuntuでバッテリー残量を確認する

VMWare上だとUbuntuのパネルにバッテリーの残量を表示させることができない(「パネルに追加」の一覧にもない)みたいで、
全画面表示してるときはバッテリー残量がわからない状態でずっと使ってたんだけど、さすがに精神衛生上よくないので対策した。

バッテリー情報は/proc/acpi/battery/BAT1/stateから見れるんだけど、そのためには
VMWareからバッテリー情報を参照できるようにする必要があるので、まずvmxファイルに
以下の2行を追加する(参考:ブログを保護 › ログイン)

chipset.useAcpiBattery=true
chipset.useApmBattery=true

この機能は仮想マシンのバージョンが6以上じゃないと使えないみたいだけど、VMWare3.1.4の仮想マシンのバージョンは最初から7だったので問題なし。

これで

$ cat /proc/acpi/battery/BAT1/state
present: yes
capacity state: ok
charging state: charged
present rate: 0 mW
remaining capacity: 57120 mWh
present voltage: 12435 mV

こんな感じでバッテリー情報が見れるようになるので、あとは

battery.py

# -*- coding: utf-8 -*-
import sys
from time import sleep

MAX = 57410  # バッテリー容量。フリーソフトなどで調べる

try: 
    while True:
        f = open("/proc/acpi/battery/BAT1/state", "r")
        # 5行目からバッテリ残量を切り出す
        remain = int(f.readlines()[4].split()[2])
        per = remain * 100 / MAX
        sys.stdout.write("[ ")
        # 2%ごとに-、10%ごとに|でバーを表現
        for i in range(per/2):
            if (i+1)%5 == 0:
                sys.stdout.write("|")
            else:
                sys.stdout.write("-")
            
        sys.stdout.write(" ]")
        print " {0}%".format(per)  # 残量表示

        f.close()
        sleep(600)  # 10分ごとに更新

except KeyboardInterrupt:
    sys.exit()

使用例(エイリアス済み)

$ battery
[ ----|----|----|----|----|----|----|----|----|--- ] 97%

こんな感じのスクリプトを別窓なりで動かすようにしてとりあえず満足。