Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. battery_level=$(acpi -b | sed -n 's/.*\ \([[:digit:]]\{1,3\}\)\%.*/\1/;p')
  4. #battery_level=`acpi -b | cut -d ' ' -f 4 | grep -o '[0-9]*'`
  5. battery_state=$(acpi -b | awk '{print $3}' | tr -d ",")
  6. #battery_state=$(acpi | grep 'Battery' | sed 's/Battery\s[0-9]*: //' | sed 's/, [0-9][0-9]*\%.*//')
  7. battery_remaining=$(acpi | grep -oh '[0-9:]* remaining' | sed 's/:\w\w remaining$/ Minutes/' | sed 's/00://' | sed 's/:/h /')
  8.  
  9. backlight_cmd=$(which xbacklight)
  10. backlight_arg=set
  11. _battery_threshold_level="35"
  12. _battery_critical_level="25"
  13. _battery_action=hibernate
  14. _battery_action_level="15"
  15.  
  16. if [ ! -f "/tmp/.battery" ]; then
  17. echo "${battery_level}" > /tmp/.battery
  18. echo "${battery_state}" >> /tmp/.battery
  19. exit
  20. fi
  21.  
  22. previous_battery_level=$(cat /tmp/.battery | head -n 1)
  23. previous_battery_state=$(cat /tmp/.battery | tail -n 1)
  24. echo "${battery_level}" > /tmp/.battery
  25. echo "${battery_state}" >> /tmp/.battery
  26.  
  27. checkBatteryLevel() {
  28. if [ "${battery_state}" != "Discharging" ] || [ "${battery_level}" == "${previous_battery_level}" ]; then
  29. if [ -f /tmp/.critbatlvl ] && [ "${battery_state}" == "Charging" ]; then
  30. notify-send.sh -s 99
  31. rm -f /tmp/.critbatlvl
  32. fi
  33. if [ ! -f /tmp/.fullbatlvl ] && [ "${battery_state}" == "Full" ]; then
  34. notify-send.sh "Full Battery" "Battery is fully charged!"$'\n'"Please unplug the charger." -i ~/.icons/full-battery.svg -u normal -r 43354 -R /tmp/.fullbatlvl
  35. fi
  36. exit
  37. fi
  38. if [ "${battery_state}" == "Charging" ] && [ ${battery_level} -lt 100 ]; then
  39. if [ ${battery_level} -le ${_battery_action_level} ]; then
  40. systemctl ${_battery_action}
  41. elif [ ${battery_level} -le ${_battery_critical_level} ]; then
  42. notify-send.sh "Critical Battery" "Your laptop will immediately enter '${_battery_action}' mode, plug the charger into a power outlet to cancel it!" -i ~/.icons/laptop-warning.svg -u critical -r 43352 -R /tmp/.critbatlvl
  43. ${backlight_cmd} -${backlight_arg} 5
  44. elif [ ${battery_level} -le ${_battery_threshold_level} ]; then
  45. notify-send.sh "Low Battery" "${battery_level}% (${battery_remaining}) of battery remaining." -i ~/.icons/low-battery.svg -u normal -r 43353
  46. ${backlight_cmd} -${backlight_arg} 25
  47. fi
  48. if [ -f /tmp/.fullbatlvl ]; then rm -f /tmp/.fullbatlvl; fi
  49. fi
  50. }
  51.  
  52. checkBatteryStateChange() {
  53. if [ "$battery_state" != "Discharging" ] && [ "$previous_battery_state" == "Discharging" ]; then
  54. notify-send "Charging" "Your laptop is connected to a power source." -i ~/.icons/power-charging.svg -u low
  55. ${backlight_cmd} -${backlight_arg} 100
  56. fi
  57.  
  58. if [ "$battery_state" == "Discharging" ] && [ "$previous_battery_state" != "Discharging" ]; then
  59. notify-send "Discharging" "Your laptop has been disconnected from power source." -i ~/.icons/power-unplugged.svg -u low
  60. fi
  61. }
  62.  
  63. # INit
  64. checkBatteryStateChange
  65. checkBatteryLevel
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement