I've been working on a program called powermgr. It's a daemon written
in Perl that can control many power management functions on Linux,
including CPU frequency and/or governor, screen brightness, laptop mode,
fan speed, wireless power management, as well as runlevel and services,
based on the state of the system.
It works on the idea of a Profile that describes the settings for each
component (in a device-independent way; for example, CPU speed is a
percentage [0% = min speed, 100% = max speed] rather than a raw speed)
and can be selected as a whole. It uses Rules to specify when a Profile
should be selected. For example, you can have a "fast" Profile that
turns the CPU speed up and turns off laptop mode, and activate it when
the ac adapter is plugged in or when the programs make, gcc, or javac
It has support for standard ACPI as well as Asus, Dell, IBM, OmniBook,
and Toshiba extensions, and also interfaces with other things like
hddtemp and laptop_mode. It comes with a default configuration file
that is quite thorough and should do a decent job, and a simple init
A test I ran suggests that powermgr can increase battery life by 50% to
100%. (Tested between "performance" and "powersave" modes on a Centrino
laptop; intermmediate results are available on the website; YMMV). It's
worked well for me.
My goal for powermgr is to get to the point where you can install it,
leave the default configuration file in place, start the daemon, and
have it act like Windows and automatically throttle things up and down.
I know there are ACPI shell scripts to do this, but powermgr is a more
modular and extensible approach, and also supports a much wider variety
You can find powermgr at http://powermgr.sourceforge.net/. It's only on
version 0.0.8 right now, but it's already quite featureful and I've
weeded out all of the big bugs I can find. I'd appreciate any feedback
you can give. (Just reply to this message, or leave me a note on
SourceForge in the bug tracker).