#!/usr/bin/perl # # nikita.oxborrow.net: /etc/acpi/acpi_pwr.pl # # Handles change between ac and battery modes # Call from acpid events and also at boot using a start script # for my $line (`cat /proc/acpi/battery/BAT1/state`) { if ($line =~ m/charging state:\s+(\w+)/) { if ($1 eq 'discharging') { &pwr_bat; } else { &pwr_ac; } last; } } sub pwr_ac { print "Switching to AC power mode\n"; # brightness (spicctrl is a sony vaio tool) # values 0-255 `/usr/bin/spicctrl -b 100`; # energy star (DPMS) features # 1200 = 20 minutes `xset +dpms 0 0 1200`; # spindown hdd when idle # see "man hdparm" (-S option) # takes multiples of 5 seconds # 60 = 5 minutes `/sbin/hdparm -q -S 60 /dev/hda`; # cpu speed `echo /proc/sys/cpu/0/speed-max > /proc/sys/cpu/0/speed`; } sub pwr_bat { print "Switching to battery power mode\n"; # brightness (spicctrl is a sony vaio tool) # values 0-255 `/usr/bin/spicctrl -b 0`; # energy star (DPMS) features # dpms [standby] [suspend] [off] # standby and suspend do nothing for me, so I've set to 0 `xset +dpms dpms 0 0 120`; # spindown hdd when idle # see "man hdparm" (-S option) # takes multiples of 5 seconds # 36 = 3 minutes; 24 = 2m `/sbin/hdparm -q -S 24 /dev/hda`; # cpu speed `echo /proc/sys/cpu/0/speed-min > /proc/sys/cpu/0/speed`; }