Skip to content

Instantly share code, notes, and snippets.

@aliou
Created April 23, 2013 17:05
Show Gist options
  • Save aliou/5445473 to your computer and use it in GitHub Desktop.
Save aliou/5445473 to your computer and use it in GitHub Desktop.
#!/bin/sh
# https://github.com/Goles/Battery
# https://github.com/erikw/tmux-powerline/blob/master/segments/battery.sh
linux_get_bat ()
{
bf=$(cat $BAT_FULL)
bn=$(cat $BAT_NOW)
BAT=`echo "100 * $bn / $bf" | bc`
echo $BAT
}
freebsd_get_bat ()
{
echo "$(sysctl -n hw.acpi.battery.life)"
}
battery_status()
{
case $(uname -s) in
"Linux")
BATPATH=${BATPATH:-/sys/class/power_supply/BAT0}
STATUS=$BATPATH/status
if [ -f "$BATPATH/energy_full" ]; then
naming="energy"
elif [ -f "$BATPATH/charge_full" ]; then
naming="charge"
fi
BAT_FULL=$BATPATH/${naming}_full
BAT_NOW=$BATPATH/${naming}_now
if [ "$1" = `cat $STATUS` -o "$1" = "" ]; then
linux_get_bat
fi
;;
"FreeBSD")
STATUS=`sysctl -n hw.acpi.battery.state`
case $1 in
"Discharging")
if [ $STATUS -eq 1 ]; then
freebsd_get_bat
fi
;;
"Charging")
if [ $STATUS -eq 2 ]; then
freebsd_get_bat
fi
;;
"")
freebsd_get_bat
;;
esac
;;
"Darwin")
case $1 in
"Discharging")
ext="No";;
"Charging")
ext="Yes";;
esac
ioreg -c AppleSmartBattery -w0 | \
grep -o '"[^"]*" = [^ ]*' | \
sed -e 's/= //g' -e 's/"//g' | \
sort | \
while read key value; do
case $key in
"MaxCapacity")
export maxcap=$value;;
"CurrentCapacity")
export curcap=$value;;
"ExternalConnected")
if [ "$ext" != "$value" ]; then
exit
fi
;;
"FullyCharged")
if [ "$value" = "Yes" ]; then
exit
fi
;;
esac
if [[ -n "$maxcap" && -n $curcap ]]; then
echo "100 * $curcap / $maxcap" | bc
break
fi
done
esac
}
BATTERY_STATUS=`battery_status`
[ -z "$BATTERY_STATUS" ] && exit
good_color="green"
middle_color="yellow"
warn_color="red"
if [ $BATTERY_STATUS -ge 75 ]; then
COLOR="#[fg=$good_color]"
elif [ $BATTERY_STATUS -ge 30 ] && [ $BATTERY_STATUS -lt 75 ]; then
COLOR="#[fg=$middle_color]"
elif [ $BATTERY_STATUS -lt 30 ]; then
COLOR="#[fg=$warn_color]"
fi
GRAPH=$(spark 0 ${BATTERY_STATUS} 100 | cut -c 2)
printf "%s%s %s%s" "$COLOR" "[$BATTERY_STATUS%]" "$GRAPH" "#[default]"
#!/bin/sh
# https://github.com/Goles/Battery
# https://github.com/erikw/tmux-powerline/blob/master/segments/battery.sh
linux_get_bat ()
{
bf=$(cat $BAT_FULL)
bn=$(cat $BAT_NOW)
BAT=`echo "100 * $bn / $bf" | bc`
echo $BAT
}
freebsd_get_bat ()
{
echo "$(sysctl -n hw.acpi.battery.life)"
}
battery_status()
{
case $(uname -s) in
"Linux")
BATPATH=${BATPATH:-/sys/class/power_supply/BAT0}
STATUS=$BATPATH/status
if [ -f "$BATPATH/energy_full" ]; then
naming="energy"
elif [ -f "$BATPATH/charge_full" ]; then
naming="charge"
fi
BAT_FULL=$BATPATH/${naming}_full
BAT_NOW=$BATPATH/${naming}_now
if [ "$1" = `cat $STATUS` -o "$1" = "" ]; then
linux_get_bat
fi
;;
"FreeBSD")
STATUS=`sysctl -n hw.acpi.battery.state`
case $1 in
"Discharging")
if [ $STATUS -eq 1 ]; then
freebsd_get_bat
fi
;;
"Charging")
if [ $STATUS -eq 2 ]; then
freebsd_get_bat
fi
;;
"")
freebsd_get_bat
;;
esac
;;
"Darwin")
case $1 in
"Discharging")
ext="No";;
"Charging")
ext="Yes";;
esac
ioreg -c AppleSmartBattery -w0 | \
grep -o '"[^"]*" = [^ ]*' | \
sed -e 's/= //g' -e 's/"//g' | \
sort | \
while read key value; do
case $key in
"MaxCapacity")
export maxcap=$value;;
"CurrentCapacity")
export curcap=$value;;
"ExternalConnected")
if [ "$ext" != "$value" ]; then
exit
fi
;;
"FullyCharged")
if [ "$value" = "Yes" ]; then
exit
fi
;;
esac
if [[ -n "$maxcap" && -n $curcap ]]; then
echo "100 * $curcap / $maxcap" | bc
break
fi
done
esac
}
BATTERY_STATUS=`battery_status`
[ -z "$BATTERY_STATUS" ] && exit
good_color="green"
middle_color="yellow"
warn_color="red"
if [ $BATTERY_STATUS -ge 75 ]; then
COLOR="#[fg=$good_color]"
elif [ $BATTERY_STATUS -ge 30 ] && [ $BATTERY_STATUS -lt 75 ]; then
COLOR="#[fg=$middle_color]"
elif [ $BATTERY_STATUS -lt 30 ]; then
COLOR="#[fg=$warn_color]"
fi
GRAPH=$(spark 0 ${BATTERY_STATUS} 100 | cut -c 2)
printf "%s%s %s%s" "$COLOR" "[$BATTERY_STATUS%]" "$GRAPH" "#[default]"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment