independ battery and volume
This commit is contained in:
20
battery/Makefile
Normal file
20
battery/Makefile
Normal 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
19
battery/battery
Executable 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
6
battery/battery.linux
Executable 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
7
battery/battery.netbsd
Executable 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
33
battery/batterymonitor
Executable 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
|
||||
Reference in New Issue
Block a user