#!/usr/bin/env bash
#  batterybar; displays battery percentage as a bar on i3blocks
#
#  Copyright 2015 Keftaa <adnan.37h@gmail.com>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
#
#



output=$(acpi battery)
percentage=$(echo "$output" | grep -o -m1 '[0-9]\{1,3\}%' | tr -d '%')
status=$(echo "$output" | egrep -o -m1 'Discharging|Charging|AC|Full|Unknown|Not charging')
remaining=$( echo "$output" | egrep -o -m1 '[0-9][0-9]:[0-9][0-9]')
[[ -n $remaining ]] && remaining_formatted=" ($remaining)"
icon=""


#There are 8 colors that reflect the current battery percentage when
#discharging
dis_colors=("#f2777a" "#f99157" "#f99157" "#ffcc66" "#ffcc66" "#99cc99"
			"#99cc99" "#99cc99")

charging_color="#66cccc"
full_color="#66cccc"
ac_color="#66cccc"

while getopts 1:2:3:4:5:6:7:8:c:f:a:h opt; do
    case "$opt" in
        1) dis_colors[0]="$OPTARG";;
        2) dis_colors[1]="$OPTARG";;
        3) dis_colors[2]="$OPTARG";;
        4) dis_colors[3]="$OPTARG";;
        5) dis_colors[4]="$OPTARG";;
        6) dis_colors[5]="$OPTARG";;
        7) dis_colors[6]="$OPTARG";;
        8) dis_colors[7]="$OPTARG";;
        c) charging_color="$OPTARG";;
        f) full_color="$OPTARG";;
        a) ac_color="$OPTARG";;
        h) printf "Usage: batterybar [OPTION] color
        When discharging, there are 8 [1-8] levels colors.
        You can specify custom colors, for example:

        batterybar -1 red -2 \"#F6F6F6\" -8 green

        You can also specify the colors for the charging, AC and
        charged states:

        batterybar -c green -f white -a \"#EEEEEE\"\n";
        exit 0;
    esac
done



#if (( percentage > 0 && percentage < 20  )); then
#    #icon=""
#    icon="----"
#elif (( percentage >= 20 && percentage < 40 )); then
#    #icon=""
#    icon="#---"
#elif (( percentage >= 40 && percentage < 60 )); then
#    #icon=""
#    icon="##--"
#elif (( percentage >= 60 && percentage < 80 )); then
#    #icon=""
#    icon="###-"
#elif (( percentage >=80 )); then
#    #icon=""
#    icon="####"
#fi
#
#if [[ "$status" = "Unknown" ]]; then
#    icon=""
#fi

icon=""

case "$status" in
"Charging")
    color="$charging_color"
    icon="$icon▲"
    if (( percentage >= 0 && percentage <= 10 )); then                           
        color="${dis_colors[0]}"                                                 
    	echo 0 on > /proc/acpi/ibm/led
    elif (( percentage > 10 && percentage <= 20 )); then                         
        color="${dis_colors[1]}"                                                 
    elif (( percentage > 20 && percentage <= 30 )); then                         
        color="${dis_colors[2]}"                                                 
    elif (( percentage > 30 && percentage <= 40 )); then                         
        color="${dis_colors[3]}"                                                 
    elif (( percentage > 40 && percentage <= 60 )); then                         
        color="${dis_colors[4]}"                                                 
    elif (( percentage > 60 && percentage <= 70 )); then                         
        color="${dis_colors[5]}"                                                 
    elif (( percentage > 70 && percentage <= 80 )); then                         
        color="${dis_colors[6]}"                                                 
    elif (( percentage > 80 )); then                                             
        color="${dis_colors[7]}"                                                 
    fi 
;;
"Full"|"Not charging")
    color="$full_color"
    icon="$icon▶"
;;
"AC")
    color="$ac_color"
    icon="$icon▲"
    echo 0 on > /proc/acpi/ibm/led
;;
"Discharging"|"Unknown")
    icon="$icon▼"
    if (( percentage >= 0 && percentage <= 10 )); then
        color="${dis_colors[0]}"
        echo 0 blink > /proc/acpi/ibm/led
    elif (( percentage > 10 && percentage <= 20 )); then
        color="${dis_colors[1]}"
    elif (( percentage > 20 && percentage <= 30 )); then
        color="${dis_colors[2]}"
    elif (( percentage > 30 && percentage <= 40 )); then
        color="${dis_colors[3]}"
    elif (( percentage > 40 && percentage <= 60 )); then
        color="${dis_colors[4]}"
    elif (( percentage > 60 && percentage <= 70 )); then
        color="${dis_colors[5]}"
    elif (( percentage > 70 && percentage <= 80 )); then
        color="${dis_colors[6]}"
    elif (( percentage > 80 )); then
        color="${dis_colors[7]}"
    fi
;;
esac

printf "$icon <span color=\"$color\">%2d%%</span>$remaining_formatted\n" $percentage
