1
0

independ battery and volume

This commit is contained in:
dtb
2022-09-17 17:55:31 -04:00
parent 1e4b4d0096
commit 325fa5ef64
9 changed files with 21 additions and 1 deletions

20
battery/Makefile Normal file
View File

@@ -0,0 +1,20 @@
all: ;
clean: ;
sane: ;
dist: ../dist/battery.tar.gz
../dist/battery: battery
mkdir -p ../dist/battery.tmp/bin/
cp battery* ../dist/battery.tmp/bin/
mv ../dist/battery.tmp ../dist/battery
../dist/battery.tar: ../dist/battery
cd ../dist/battery && pax -w -x ustar . >../battery.tar.tmp
mv ../dist/battery.tar.tmp ../dist/battery.tar
../dist/battery.tar.gz: ../dist/battery.tar
gzip -c <../dist/battery.tar >../dist/battery.tar.gz.tmp
mv ../dist/battery.tar.gz.tmp ../dist/battery.tar.gz
.PHONY: all clean sane

19
battery/battery Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/sh
subprogram="$(command -v "$0")"
if ! nonzero "$subprogram" && ! test -e "$0"; then
printf "%s: can't find myself!\n" "$0"
exit 70 # sysexits(3) EX_SOFTWARE
else
subprogram="$0"
fi
# battery -> battery.linux battery.netbsd etc
subprogram="$0"."$(uname | lowercase)"
if ! command -v "$subprogram" >/dev/null 2>&1 && ! test -e "$subprogram"; then
printf "%s: unsupported system\n" "$(uname)" 1>&2
exit 70 # sysexits(3) EX_SOFTWARE
fi
"$subprogram" || exit 70 # sysexits(3) EX_SOFTWARE

6
battery/battery.linux Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/sh
# this is a dirty hack.
# acpi | awk '{print $4}' will print the battery percentage,
# and s/,$// strips the trailing comma.
acpi | awk '{print $4}' | sed 's/,$//'

7
battery/battery.netbsd Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
envstat -s acpibat0:charge \
| sed 1,2d \
| cut -d ':' -f 2 \
| awk '{print $1}' \
| cut -d '.' -f 1

33
battery/batterymonitor Executable file
View File

@@ -0,0 +1,33 @@
#!/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 ! [ $current_level -eq $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