#!/bin/sh # Prints all batteries, their percentage remaining and an icon corresponding # to charge level. Uses Nerd Font battery icons. case $BLOCK_BUTTON in 3) notify-send " Battery module" ": discharging : charging : charged - Scroll to adjust xbacklight." ;; 4) xbacklight -inc 10 ;; 5) xbacklight -dec 10 ;; 6) setsid -f "$TERMINAL" -e "$EDITOR" "$0" ;; esac # Get battery level icon based on percentage # full= (f240), 3/4= (f241), half= (f242), quarter= (f243) # 20%=󰁻 (f007b), 10%=󰁺 (f007a), empty= (f244) get_battery_icon() { if [ "$1" -ge 95 ]; then echo "" elif [ "$1" -ge 65 ]; then echo "" elif [ "$1" -ge 40 ]; then echo "" elif [ "$1" -ge 25 ]; then echo "" elif [ "$1" -ge 10 ]; then echo "󰁻" elif [ "$1" -ge 5 ]; then echo "󰁺" else echo "" fi } # Exit silently if no battery exists (desktop) [ ! -d /sys/class/power_supply/BAT0 ] && [ ! -d /sys/class/power_supply/BAT1 ] && exit 0 # Loop through all attached batteries and format the info for battery in /sys/class/power_supply/BAT?*; do # If non-first battery, print a space separator. [ -n "${capacity+x}" ] && printf " " # Sets up the status and capacity capacity="$(cat "$battery/capacity" 2>&1)" status="$(cat "$battery/status" 2>&1)" # Get icon based on battery level icon=$(get_battery_icon "$capacity") # Add charging indicator case "$status" in "Charging") charge_indicator=" " ;; "Full") charge_indicator=" " ;; *) charge_indicator="" ;; esac # Prints the info printf "%s %d%%%s" "$icon" "$capacity" "$charge_indicator" done && printf "\\n"