Files
dotfiles_i3_notebook_arch/polybar/scripts/battery.sh
2025-09-22 08:27:51 +02:00

67 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
BATTERY="BAT1"
CAPACITY=$(cat /sys/class/power_supply/$BATTERY/capacity)
STATUS=$(cat /sys/class/power_supply/$BATTERY/status)
# Define icons
ICON_FULL="" # nf-fa-battery_full
ICON_HIGH="" # nf-fa-battery_three_quarters
ICON_MEDIUM="" # nf-fa-battery_half
ICON_LOW="" # nf-fa-battery_quarter
ICON_EMPTY="" # nf-fa-battery_empty
ICON_CHARGING_HIGH="󱊦" # nf-md-battery_charging_outline
ICON_CHARGING_MEDIUM="󱊥" # nf-md-battery_charging_medium
ICON_CHARGING_LOW="󱊤" # nf-md-battery_charging_low
ICON_CHARGING_OUTLINE="󰢟" # nf-md-battery_charging_high
# Define colors
COLOR_NORMAL="#FFFFFF" # White
COLOR_WARNING="#FFA500" # Orange
COLOR_CRITICAL="#FF0000" # Red
# Set icon based on capacity and status
if [ "$STATUS" = "Charging" ] || [ "$STATUS" = "Full" ]; then
if [ $CAPACITY -ge 90 ]; then
ICON=$ICON_CHARGING_HIGH
elif [ $CAPACITY -ge 60 ]; then
ICON=$ICON_CHARGING_MEDIUM
elif [ $CAPACITY -ge 30 ]; then
ICON=$ICON_CHARGING_LOW
else
ICON=$ICON_CHARGING_OUTLINE
fi
else
if [ $CAPACITY -ge 80 ]; then
ICON=$ICON_FULL
elif [ $CAPACITY -ge 60 ]; then
ICON=$ICON_HIGH
elif [ $CAPACITY -ge 30 ]; then
ICON=$ICON_MEDIUM
elif [ $CAPACITY -ge 10 ]; then
ICON=$ICON_LOW
else
ICON=$ICON_EMPTY
fi
fi
# Set color based on capacity
if [ $CAPACITY -le 20 ] && [ "$STATUS" != "Charging" ] && [ "$STATUS" != "Full" ]; then
COLOR=$COLOR_WARNING
if [ $CAPACITY -le 10 ]; then
COLOR=$COLOR_CRITICAL
fi
else
COLOR=$COLOR_NORMAL
fi
# Read the toggle state
TOGGLE_STATE=$(cat ~/.config/polybar/scripts/battery_toggle_state)
# Output for Polybar
if [ "$TOGGLE_STATE" == "icon" ]; then
echo "%{F$COLOR}$ICON%{F-}"
else
echo "%{F$COLOR}$CAPACITY%%{F-}"
fi