]> git.pld-linux.org Git - packages/acpid.git/blob - acpid.battery.sh
4c74db74e257329b72cb3010130e6c62786739ac
[packages/acpid.git] / acpid.battery.sh
1 #!/bin/sh
2 # /etc/acpid/actions/battery.sh
3 # based on work by Frank Dietrich <ablesoft@gmx.de>
4 # £ukasz Pawelczyk <havner@pld-linux.org>
5 #
6 # Handle power related events and take appropriate actions.
7
8 if [ $# != 1 ]; then
9         exit 1
10 fi
11 set $*
12
13 AC=/proc/acpi/ac_adapter/AC
14 BAT=/proc/acpi/battery/$2
15
16 # get the AC connector state (plugged/unplugged) from /proc filesystem.
17 AC_STATE=`sed -n 's/^.*\(off\|on\)-line.*/\1/p' $AC/state`
18
19 # get the battery state from /proc filesystem
20 BAT_CAPACITY=`awk '/^remaining\ capacity:/ {print $3}' $BAT/state`
21 BAT_WARNING=`awk '/^alarm:/ {print $2}' $BAT/alarm`
22 BAT_CRITICAL=`awk '/^design\ capacity\ low:/ {print $4}' $BAT/info`
23 if [ "$BAT_CAPACITY" -le "$((BAT_CRITICAL+200))" -a "$AC_STATE" = "off" ]; then
24         BAT_STATE=critical
25 elif [ "$BAT_CAPACITY" -le "$((BAT_WARNING+200))" -a "$AC_STATE" = "off" ]; then
26         BAT_STATE=warning
27 else
28         BAT_STATE=normal
29 fi
30
31 case "$AC_STATE" in
32   on)
33         # AC connector plugged in
34         logger "acpid: `basename $AC` connector plugged in."
35         # deactivate standby (spindown) timeout for the drive
36         #hdparm -q -S 0 /dev/hda
37         # handle processor
38         #echo 0 > /proc/acpi/processor/CPU0/throttling
39         #echo 0 > /proc/acpi/processor/CPU0/performance
40         ;;
41   off)
42         # AC connector unplugged
43         logger "acpid: `basename $AC` connector unplugged."
44         # activate standby (spindown) timeout for the drive
45         # timeout 5 minutes (man hdparm, for more informations)
46         #hdparm -q -S 60 /dev/hda 
47         # handle processor
48         #echo 4 > /proc/acpi/processor/CPU0/throttling
49         #echo 3 > /proc/acpi/processor/CPU0/performance
50         ;;
51   *)
52         # AC connector in undetermined state
53         logger "acpid: Could not determine new `basename $AC` connector state."
54         ;;
55 esac
56
57 case "$BAT_STATE" in
58   warning)
59         # battery passed acpi alarm state and AC unplugged
60         logger "acpid: Remaining `basename $BAT` battery capacity low."
61         # play alarm sound
62         #play /path_to/alarm.wav
63         # put computer to sleep
64         #echo mem > /sys/power/state
65         #hibernate
66         ;;
67   critical)
68         # some laptops generate acpi event when machine is about to turn off
69         logger "acpid: Remaining `basename $BAT` battery capacity VERY low."
70         # play alarm sound
71         #play /path_to/alarm.wav
72         # put computer to sleep
73         #echo mem > /sys/power/state
74         #hibernate
75         ;;
76   normal)
77         # either battery is charged or AC plugged
78         ;;
79   *)
80         # battery in undetermined state
81         logger "acpid: Could not determine `basename $BAT` battery state."
82         ;;
83 esac
This page took 0.022034 seconds and 2 git commands to generate.