34 lines
728 B
Bash
Executable File
34 lines
728 B
Bash
Executable File
#!/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
|