67 lines
1.8 KiB
Bash
Executable File
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
|