#!/bin/bash # Define the battery directory battery_dir="/sys/class/power_supply/BAT0" # Read relevant battery info capacity=$(cat "$battery_dir/capacity") capacity_level=$(cat "$battery_dir/capacity_level") status=$(cat "$battery_dir/status") # Normalize the values (remove spaces and convert to lowercase) status="${status//[[:space:]]/}" # Remove spaces status="${status,,}" # Convert to lowercase capacity_level="${capacity_level//[[:space:]]/}" capacity_level="${capacity_level,,}" # Define icons for various statuses and capacity levels declare -A icons # Charging Icons (based on capacity level) icons["charging_critical"]="⚡️" icons["charging_low"]="🔋" icons["charging_normal"]="🔋" icons["charging_high"]="🔋" icons["charging_full"]="🔌" # Discharging Icons (based on capacity level) icons["discharging_critical"]="⚡️" icons["discharging_low"]="🔋" icons["discharging_normal"]="🔋" icons["discharging_high"]="🔋" icons["discharging_full"]="🔋" # Not Charging Icon (simplified to one icon) notcharging_icon="🔋" # Unknown Icon (simplified to one icon) unknown_icon="❓" # Determine the icon based on status and capacity level if [[ "$status" == "charging" || "$status" == "discharging" ]]; then icon_key="${status}_${capacity_level}" icon="${icons[$icon_key]:-"❓"}" # Default to ❓ if no specific icon is found elif [[ "$status" == "not charging" ]]; then icon=$notcharging_icon elif [[ "$status" == "unknown" ]]; then icon=$unknown_icon else icon="❓" # Fallback icon if the status doesn't match known values fi # Output the status in JSON format echo "{\"level\":\"$capacity\",\"status\":\"$status\",\"icon\":\"$icon\"}"