#!/bin/bash set -e trap 'xmessage -nearmouse "WARNING: battery monitor died!"' EXIT was_notified=0 while true; do acpi_data=$(acpi -b | grep -v 'rate information unavailable' | head -n1) status=$(echo -n "$acpi_data" | awk -F'[,:%]' '{print $2}') capacity=$(echo -n "$acpi_data" | awk -F'[,:%]' '{print $3}') echo "Status: $status; Capacity: $capacity; was_notified: $was_notified" if [[ "$status" =~ "Charging" ]]; then was_notified=0 fi if [[ "$status" =~ "Discharging" && "$capacity" -lt 15 && "$was_notified" = 0 ]]; then xmessage -nearmouse "$acpi_data"& was_notified=1 fi if [[ "$status" =~ "Discharging" && "$capacity" -lt 10 ]]; then echo -e "Battery critical, suspending\n$acpi_data" | xmessage -nearmouse -file -& sleep 5 systemctl suspend sleep 600 # Wait 10 minutes, so we only hibernate once fi sleep 10 done