#!/bin/bash DIR="/sys/class/power_supply" [[ "$BLOCK_BUTTON" == "1" ]] && LONG=true if [[ "$BLOCK_INSTANCE" == "" ]]; then for BAT in $DIR/BAT*/; do [[ -f "${BAT}uevent" ]] && BATS+="$BAT/uevent " done else [[ -f "$DIR/BAT$BLOCK_INSTANCE/uevent" ]] && BATS="$DIR/BAT$BLOCK_INSTANCE/uevent" fi if [[ "$BATS" == "" ]]; then echo " no battery " echo "n/a" exit 33 fi cat $BATS | gawk -F '=' -v LONG="$LONG" ' BEGIN { efull = 0 enow = 0 status = "" } /POWER_SUPPLY_STATUS=/ { if (status == "") { if ($2 == "Discharging") { status = "" } else if ($2 == "Charging") { status = "⚡" } } } /POWER_SUPPLY_ENERGY_FULL=/ { efull += $2 } /POWER_SUPPLY_ENERGY_NOW=/ { enow += $2 } END { charge = enow / efull * 100 if (LONG == "true") { printf("%s%d%\n", status, charge) } else { if (charge < 100 / 9) { printf("%s▁\n", status) } else if (charge < 100 / 9 * 2 ) { printf("%s▁\n", status) } else if (charge < 100 / 9 * 3 ) { printf("%s▂\n", status) } else if (charge < 100 / 9 * 4 ) { printf("%s▃\n", status) } else if (charge < 100 / 9 * 5 ) { printf("%s▄\n", status) } else if (charge < 100 / 9 * 6 ) { printf("%s▅\n", status) } else if (charge < 100 / 9 * 7 ) { printf("%s▆\n", status) } else if (charge < 100 / 9 * 8 ) { printf("%s▇\n", status) } else { printf("%s█\n", status) } } printf("%s%d\n", status, charge) if (charge > 25) { print("#04B431\n") } else if (charge > 20) { print("#A8FF00\n") } else if (charge > 15) { print("#FFF600\n") } else if (charge > 10) { print("#FFAE00\n") } else if (charge > 5) { print("#FF0000\n") } else { exit 33 } } '