1
0
Fork 0
dotfiles/dot_config/polybar/scripts/executable_polybar_healthbar.sh

104 lines
3 KiB
Bash
Raw Normal View History

#!/bin/bash
#
# Battery status as am RPG-like "health bar" with hearts and half-hearts.
# To be used with polybar or similar. This should work for a ThinkPad with
# two batteries installed.
#
# It also shows desktop notifications when the battery is low (notify-send).
#
# Author: machaerus
# https://gitlab.com/machaerus
#
# Original idea for calculating the battery % is not mine, unfortunately
# I don't remember the source.
source colors.sh
healthbar_print() {
PATH_AC="/sys/class/power_supply/AC"
PATH_BATTERY_0="/sys/class/power_supply/BAT0"
PATH_BATTERY_1="/sys/class/power_supply/BAT1"
ac=0
battery_level_0=0
battery_level_1=0
battery_max_0=0
battery_max_1=0
if [ -f "$PATH_AC/online" ]; then
ac=$(cat "$PATH_AC/online")
fi
if [ -f "$PATH_BATTERY_0/energy_now" ]; then
battery_level_0=$(cat "$PATH_BATTERY_0/energy_now")
fi
if [ -f "$PATH_BATTERY_0/energy_full" ]; then
battery_max_0=$(cat "$PATH_BATTERY_0/energy_full")
fi
if [ -f "$PATH_BATTERY_1/energy_now" ]; then
battery_level_1=$(cat "$PATH_BATTERY_1/energy_now")
fi
if [ -f "$PATH_BATTERY_1/energy_full" ]; then
battery_max_1=$(cat "$PATH_BATTERY_1/energy_full")
fi
battery_level=$(("$battery_level_0 + $battery_level_1"))
battery_max=$(("$battery_max_0 + $battery_max_1"))
battery_percent=$(("$battery_level * 100"))
battery_percent=$(("$battery_percent / $battery_max"))
# notify-send "Battery below 90%"
# notify-send "$battery_percent"
if [[ "$battery_percent" -lt 3 ]] && [[ ! "$ac" -eq 1 ]]; then
play /usr/share/sounds/freedesktop/stereo/message.oga 2> /dev/null
notify-send -u critical "Battery below 3%!"
elif [[ "$battery_percent" -lt 10 ]] && [[ ! "$ac" -eq 1 ]]; then
play /usr/share/sounds/freedesktop/stereo/message.oga 2> /dev/null
notify-send -u critical "Battery below 10%!"
fi
# if [ "$battery_percent" -gt 88 ]; then
# hp="$faded_red   $RESET"
# elif [ "$battery_percent" -gt 75 ]; then
# hp="$faded_red   ﯜ$RESET"
# elif [ "$battery_percent" -gt 63 ]; then
# hp="$faded_red   $RESET$dark0_soft$RESET"
# elif [ "$battery_percent" -gt 50 ]; then
# hp="$faded_red  ﯜ $RESET$dark0_soft$RESET"
# elif [ "$battery_percent" -gt 38 ]; then
# hp="$faded_red  $RESET$dark0_soft $RESET"
# elif [ "$battery_percent" -gt 25 ]; then
# hp="$faded_red ﯜ $RESET$dark0_soft $RESET"
# elif [ "$battery_percent" -gt 13 ]; then
# hp="$faded_red $RESET$dark0_soft  $RESET"
# else
# hp="$faded_redﯜ $RESET$dark0_soft  $RESET"
# fi
# if [ "$ac" -eq 1 ]; then
# echo "$dark0_soft[$faded_yellow$dark0_soft]$RESET $battery_percent"
# else
# echo " $battery_percent"
# fi
if [ "$battery_percent" -gt 25 ]; then
battery_color="$faded_green"
elif [ "$battery_percent" -gt 10 ]; then
battery_color="$faded_yellow"
else
battery_color="$faded_red"
fi
if [ "$ac" -eq 1 ]; then
echo "$battery_color$RESET $battery_percent"
else
echo "$battery_color$RESET $battery_percent"
fi
}
healthbar_print