#!/bin/bash

# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)

# Simple script to watch the battery capacity and
# turn the power LED orange when it reaches 30%, red at 20%, and blinking red at 10%

. /etc/profile

function set_led() {
  case $1 in
    red)
      echo 0 > /sys/class/leds/battery_green/brightness
      echo 1 > /sys/class/leds/battery_red/brightness
    ;;
    green)
      echo 1 > /sys/class/leds/battery_green/brightness
      echo 0 > /sys/class/leds/battery_red/brightness
    ;;
    orange)
      echo 1 > /sys/class/leds/battery_green/brightness
      echo 1 > /sys/class/leds/battery_red/brightness
    ;;
    off)
      echo 0 > /sys/class/leds/battery_green/brightness
      echo 0 > /sys/class/leds/battery_red/brightness
    ;;
  esac
}


while true
do
  CAP=$(cat /sys/class/power_supply/battery/capacity)
  STAT=$(cat /sys/class/power_supply/battery/status)
  ISDISABLED=$(get_setting powerled.disabled)
  if [ "${ISDISABLED}" == "1" ]
  then
    set_led off
  else
    if [ ${STAT} == "Discharging" ]
    then
      if (( ${CAP} <= 5 ))
      then
        for ctr in $(seq 1 1 5)
        do
          set_led red
          sleep .5
          set_led off
          sleep .5
        done
        continue
      elif (( ${CAP} <= 10 ))
      then
        set_led red
      elif (( ${CAP} <=  20 ))
      then
        set_led orange
      else
        set_led green
      fi
    elif (( ${CAP} >= 95 ))
    then
      set_led green
    fi
    sleep 15
  fi
done
