149 lines
5.1 KiB
Bash
Executable file
149 lines
5.1 KiB
Bash
Executable file
#!/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
|