#!/usr/bin/env bash readarray -t output <<< $(acpi battery) battery_count=${#output[@]} for line in "${output[@]}"; do percentages+=($(echo "$line" | grep -o -m1 '[0-9]\{1,3\}%' | tr -d '%')) statuses+=($(echo "$line" | grep -E -o -m1 'Discharging|Charging|AC|Full|Unknown')) remaining=$(echo "$line" | grep -E -o -m1 '[0-9][0-9]:[0-9][0-9]') if [[ -n $remaining ]]; then remainings+=(" ($remaining)") else remainings+=("") fi done end=$(($battery_count - 1)) for i in $(seq 0 $end); do if (( percentages[$i] > 0 && percentages[$i] < 25 )); then squares="$percentages%" elif (( percentages[$i] >= 20 && percentages[$i] < 50 )); then squares="$percentages%" elif (( percentages[$i] >= 40 && percentages[$i] < 75 )); then squares="$percentages%" elif (( percentages[$i] >= 60 && percentages[$i] < 100 )); then squares="$percentages%" elif (( percentages[$i] >=80 )); then squares="$percentages%" fi case "${statuses[$i]}" in "Charging") squares="charging " ;; "Full") squares="100%" ;; "AC") squares="" ;; esac message="$message $squares" done echo $message