理系学生日記

おまえはいつまで学生気分なのか

コマンドラインから Mac のバッテリ情報を取得する

ターミナルにバッテリ情報を表示させるようにさせたらクールだなって思うことが一日に 3 回くらいあったりするのですけども、手っとり早くやろうと思ったら ioreg 使えば良いと思うですよ。

% ioreg -n AppleSmartBattery
  (略)
    | |     +-o AppleSmartBattery  <class AppleSmartBattery, id 0x10000021d, registered, matched, active, busy 0 (9 ms), retain 5>
    | |         {
    | |           "ExternalConnected" = No
    | |           "TimeRemaining" = 197
    | |           "InstantTimeToEmpty" = 208
    | |           "ExternalChargeCapable" = No
    | |           "CellVoltage" = (3971,3981,3977,0)
    | |           "PermanentFailureStatus" = 0
    | |           "BatteryInvalidWakeSeconds" = 30
    | |           "AdapterInfo" = 0
    | |           "MaxCapacity" = 6270
  (略)

ioreg はハンパなく出力が長いので、これを加工するようなスクリプトでもこさえてやります。このくらいであれば awk とかで良いかな。

% cat battery.sh
#!/bin/sh
ioreg -n AppleSmartBattery | \
 awk '/MaxCapacity/        { MAX=$5     }
      /CurrentCapacity/    { CURRENT=$5 }
      /InstantTimeToEmpty/ { REMAIN=$5  }
      END { printf("Battery:  cur: %4d [mAh] max: %4d [mAh] (%5.2f%%)    remain: %3d [min] \n", 
                   CURRENT, MAX, CURRENT/MAX*100, REMAIN) }'
% ./battery.sh
Battery:  cur: 4917 [mAh] max: 6270 [mAh] (78.42%)    remain: 199 [min] 


あとは、これを .screenrc の backtick とかに記述しておけばよいですね。

caption always "%{= dd}%0`"
backtick 0 1 1 $HOME/.screen.d/battery.sh