#!/bin/sh POLLING_FREQUENCY=1 # ISO 8601 alias date="date '+%Y-%m-%dT%T'" emit() { printf "[%s] " "$(date)" echo "$@" } ! battery >/dev/null 2>&1 \ && printf "Unable to get battery status on this system.\n" 1>&2 \ && exit 1 \ || true current_level=$(battery) previous_level=$current_level emit "$(printf "Current level: %d%%" "$current_level")" while true; do current_level=$(battery) if ! streq $current_level $previous_level; then [ $current_level -lt $previous_level ] \ && emit "$(printf "Discharged: %d%% -> %d%%\n" $previous_level $current_level )" \ || emit "$(printf " Charged: %d%% -> %d%%\n" $previous_level $current_level )" previous_level=$current_level fi sleep $POLLING_FREQUENCY done