EvilZone

Programming and Scripting => Scripting Languages => : Deque May 21, 2013, 12:18:04 PM

: [Bash] Show battery status in prompt
: Deque May 21, 2013, 12:18:04 PM
This bash script that I wrote uses awk to get the number of bars to show how much the battery is loaded. It prints the bars in appropriate colors ranging from red to yellow to green to show the status. In addition it indicates if the battery is loading with the '~'.

Note that you maybe have to adjust the paths of BATTERY_DIR and ACAD_DIR to make it work. (This script is tested and works on Ubuntu 13.04)

:
#! /bin/bash

BATTERY_DIR=/sys/class/power_supply/BAT0
ACAD_DIR=/sys/class/power_supply/AC

BARS=$( awk '{print int( 5*($0/100) + 0.5) }' ${BATTERY_DIR}/capacity)

if [ $(cat ${ACAD_DIR}/online) -eq 1 ]; then
    echo -ne "~"
fi

if [ $BARS -gt 3 ]; then
    echo -ne "\[\033[1;32m\]" #green color
elif [ $BARS -gt 2 ]; then
    echo -ne "\[\033[1;33m\]" #yellow color
else
    echo -ne "\[\033[1;31m\]" #red color
fi

for (( c=1; c<=${BARS}; c++ ))
do
    echo -ne "|"
done

for (( c=${BARS} + 1; c<=5; c++ ))
do
    echo -ne " "
done

Old (Ubuntu 12.10)
:
#! /bin/bash

BATTERY_DIR=/proc/acpi/battery/BAT1
ACAD_DIR=/proc/acpi/ac_adapter/ACAD

BARS=$( awk '/last full capacity/ {c = $4}
/remaining capacity/ {print int( (5*($3/c)) + 0.5 )}' ${BATTERY_DIR}/info ${BATTERY_DIR}/state)

if grep -q on-line ${ACAD_DIR}/state; then
    echo -ne "~"
fi

if [ $BARS -gt 3 ]; then
    echo -ne "\[\033[1;32m\]" #green color
elif [ $BARS -gt 2 ]; then
    echo -ne "\[\033[1;33m\]" #yellow color
else
    echo -ne "\[\033[1;31m\]" #red color
fi

for (( c=1; c<=${BARS}; c++ ))
do
    echo -ne "|"
done

for (( c=${BARS} + 1; c<=5; c++ ))
do
    echo -ne " "
done

Now you can use this i.e. to show the battery status in your prompt.

Example what to put in your .bashrc: (I saved the bash script as battery.sh in my home)

:
PS1="<\[\033[0;34m\]\u:\w\[\033[0;m\]>-(`battery.sh`\[\033[0;m\]):\$ "
Which will look like this (full battery):

(http://s7.directupload.net/images/130521/4xzz7iq5.png) (http://www.directupload.net)

Or like this (low battery):

(http://s1.directupload.net/images/130521/jlaqsxbz.png) (http://www.directupload.net)
: Re: [Bash] Show battery status in prompt
: proxx May 21, 2013, 12:35:16 PM
Very sweet little script.
Only Im wondering about performace.
I like my terminals blazingly fast, as they should be.
Do you notice this ?

Maybe you could use a cronjob every x minutes and read from that for example.
Would keep things faster I can imagine.
: Re: [Bash] Show battery status in prompt
: Deque May 21, 2013, 02:42:00 PM
Very sweet little script.
Only Im wondering about performace.
I like my terminals blazingly fast, as they should be.
Do you notice this ?

Maybe you could use a cronjob every x minutes and read from that for example.
Would keep things faster I can imagine.

Thanks. I don't recognize any difference in speed, though.
: Re: [Bash] Show battery status in prompt
: parad0x May 21, 2013, 05:39:52 PM
Nice but I don't use lynx and also I use Desktop. :P
: Re: [Bash] Show battery status in prompt
: Deque May 21, 2013, 06:44:17 PM
Nice but I don't use lynx and also I use Desktop. :P

What is lynx?
: Re: [Bash] Show battery status in prompt
: vezzy May 21, 2013, 06:44:53 PM
Nice but I don't use lynx and also I use Desktop. :P

lolwut

What does the usage of a text browser have to do with this?
: Re: [Bash] Show battery status in prompt
: parad0x May 22, 2013, 07:46:34 AM
What is lynx?
Linux
: Re: [Bash] Show battery status in prompt
: zoup May 22, 2013, 11:43:25 AM
Nice script. I have to try this out on my laptop with broken battery  ;D

:thumbs up:
: Re: [Bash] Show battery status in prompt
: Deque June 23, 2013, 10:36:02 AM
I upgraded to Ubuntu 13.04 and encountered that the script doesn't work anymore.
So I adjusted the bash script. See above. For users of the LTS the old script is still there in spoiler tags.