shithub: rc

ref: 7fd1655df9afc31dd60db92ebd81b3f479e7d865
dir: /bin/nopedog/

View raw version
#!/bin/rc
rfork n
if(! test -f '#s'/acpi)
	aux/acpi -s acpi || exit
mount '#s'/acpi /mnt/pm || exit
if(! test -f /mnt/pm/battery)
	exit no battery to hand
# safer to assume that if one battery has dipped very low and we're not charging,
# either it has to be removed or replaced, or we're in a danger zone
# total capacity is taken from design capacity and ratio will be lower, as a
# precaution
awk -v 'sys='^$sysname -v 'bat='-1 '
NR == 1{ bat = $1; left = $3; cap = $4; chg = $12 ~ / charging/ }
NR > 1{ bat = $1 < bat ? $1 : bat; left += $3; cap += $4; chg = chg || $12 ~ / charging/ }
END{
	if(bat < 0 || chg)
		exit
	if(bat < 5 || left / cap < 0.05)
		system("fshalt")
	else if(bat < 10){
		print "master 100" >"#A/volume"
		if("ls \''#s\''/riowctl.*" | getline x > 0)
			system("wctl=" x " window -dx 120 -dy 200 -minx 0 -miny 0 \''label alert; echo FAILURE IS IMMINENT; while() play /lib/m/mamb/pripyat.evacuation.audio.opus\''")
	}
}
' /mnt/pm/battery