#!/usr/bin/env bash # batterybar; displays battery percentage as a bar on i3blocks # # Copyright 2015 Keftaa # # 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 %2d%%$remaining_formatted\n" $percentage