#!/bin/bash default_capacity_threshold=50 if [ -e /usr/lib/bash/sleep ] then enable -f /usr/lib/bash/sleep sleep else echo 'Warning: not found: /usr/lib/bash/sleep (try: "sudo apt install bash-builtins")' >&2 fi main() { capacity_threshold=${1:-$default_capacity_threshold} while true do check_batteries /sys/class/power_supply/BAT* sleep 1 done } check_batteries() { for dir in "$@" do [ -d "$dir" ] || continue check_battery "$dir" done } check_battery() { battery_dir=$1 read status < "$battery_dir"/status || return [ "$status" = Discharging ] || return 0 read capacity < "$battery_dir"/capacity || return case "$capacity" in '' | *[^0-9]*) echo "Error: unexpected value for battery capacity: $capacity" >&2 return 1 ;; esac if [ "$capacity" -lt "$capacity_threshold" ] then systemctl suspend fi } main "$@"