GNU screen の backtickにN900のバッテリー残量表示するようにしてみた
なんか最近気がつくとN900のバッテリーがジリ貧になってることが多々ある。(そろそろバッテリーがへたってきてるのかなぁ?)
普段PCからsshでログインしてあおり倒してるので、ポケットの中にあるN900のバッテリー切れに気づきにくい。最近、GNU Screenに backtickという機能があるのを知ったので、それを使ってハードステータスにバッテリーモニタを仕込んでみた。
GNU Screen って何かっていうと、なんて説明すればいいんだろう? Wikipediaによると、「フリーな端末多重接続ソフトウェアである。」うん意味不明、説明割愛w。
まず、backtick用のスクリプト以下を/home/user/bin/batmonitorN900に保存した。
#!/bin/sh # $N=表示インジケータ数 N=8 chrS=" " # 12345678901234567890 N=最大20文字まで対応 # $PERCENT=充電残容量 PERCENT=`lshal -u /org/freedesktop/Hal/devices/bme | awk '$1=="battery.charge_level.percentage" {print$3}'` # インジケータの長さ設定 BAR=`expr "${PERCENT}" \* "$N" / 101 + 1` # $PERCENTが文字列 か100より大きいと100にして処理継続 if [ $? -ge 2 ] || [ $PERCENT -gt 100 ];then PERCENT=100 BAR=$N fi charBAR=`expr substr "${chrS}" 1 "${BAR}"` SPC=`expr "$N" - "${BAR}"` charSPC=`expr substr "${chrS}" 1 "${SPC}"` if [ x`lshal -u /org/freedesktop/Hal/devices/bme | awk '$1 =="battery.rechargeable.is_charging" {print $3}'` = "xtrue" ] then STATE='充電中' fi # COLOR=インジケーター色 if [ $PERCENT -lt 20 ]; then COLOR="=r kr" elif [ $PERCENT -lt 30 ]; then COLOR="=r kY" elif [ $PERCENT -lt 40 ]; then COLOR="=r ky" elif [ $PERCENT -lt 50 ]; then COLOR="=r kb" else COLOR="=r kg" fi # 出力 echo -e "$STATE $PERCENT%[\005{$COLOR}${charBAR}\005{-}${charSPC}]"
作ったスクリプトに実行権限をつける。chmod a+x /home/user/bin/batmonitorN900
で、.screenrc とかに
backtick 1 0 30 /home/user/bin/batmonitorN900 hardstatus alwayslastline "%H [%02c] %-w%{=b bw}%n %t%{-}%+w %=%1`"
を追記。1行目で、30秒毎に、batmonitorN900 を実行してくれて実行結果がbacktickのid=1に入るようになる。
2行目で、ハードステータスの表示内容設定。%1` が、backtickのid=1の参照。
hardstatusの表記やエスケープの仕方が奇奇怪怪で分かり難く四苦八苦しました。
これで、心もち安心できるようになった。ちなみにその左に表示させてるのは、PocketWifiの3Gアンテナ*1。apt-getで落ちてくるGNU screenだと、ハードステータスに日本語表示できなかったので、こちらからパッチ頂いて、当てています。