2008 November 14 2.2rc4
Change the way that we sleep/wait for activity, to use select
rather than a fixed-length sleep, supplied by Julien Blache of
The attached patch for wmacpi makes it use select() instead of
sleeping. It also adjusts the timeout of the select() call
depending on the blink & scroll options.
If scrolling is not activated, there's no reason to wake up
10x/sec. If blinking is activated, waking up once per second is
enough. If blinking is not activated, then we can wake up just to
update the data and we're fine.
With scrolling and blinking disabled, this saves a number of
wakeups and helps battery life. Unfortunately there's another
source of wakeups that's probably due to libdockapp that still
makes 6 wakeups/seconds (in another thread it seems).
With this patch wmacpi makes a best effort to match the sample
rate set by the user, but that's hardly an issue I think.
I haven't released this patch yet in Debian, so if you like it and
want to roll out a release, feel free :) Otherwise I'll add it to
the package soon.
2008 March 18 2.2rc3
Some fixes for the sysfs interface support, supplied by
> Okay, I finally found time to make a new release including this
> patch - 2.2rc2. It's up on my website now.
I don't remember sending you the updated patch, as it turned out that
you can have different attributes in sysfs depending on what the
The current version is attached.
2008 March 14 2.2rc2
Support for the sysfs interface that became mandatory with kernel
2.6.24 (patch supplied by firstname.lastname@example.org).
A number of graphics fixes also from email@example.com.
Removed support for hardware reported critical battery status.
2007 July 14 2.2rc1
Major changes to command line handling and to the way we use
libdockapp, courtesy of Patrice Dumas. This should hopefully fix
several long-standing bugs with non-wmaker window managers (in
particular Debian bugs #280495 and 293546).
Updated to support newer kernels that no longer support
/proc/acpi/info - thanks to Samuel Ortiz.
Fixed a longstanding issue with redrawing - thanks to Vito
This version changes a number of command line options (little used
ones, but they're still incompatible changes) due to the
libdockapp work. In particular, -w becomes -x, -v becomes -V (and
takes an argument rather than being repeated), and -V becomes -v
(thanks to libdockapp grabbing -h, -v and -w for itself). Also,
long options are now supported for everything in wmacpi (but not
acpi, since it doesn't use libdockapp for command line parsing).
2007 January 10 2.2a1
Added a patch from Patrice Dumas to support newer versions of
Updated email address in AUTHORS and manpages.
2005 February 2 2.1
Finalised libdockapp-0.5.0 port - no changes from 2.1rc1.
2005 Jan 5 2.1rc1
Typo fix in the manpage.
Ported to libdockapp-0.5.0 - all this needed was changing the
type of the dockapp width and height to unsigned short.
2004 October 24 2.0
Upped version number to 2.0.
Small typo fixes.
wmacpi 2.0 goes gold . . .
2004 September 28 2.0rc1
Added support for switching to capacity mode automatically, on
detecting dodgy reports from the battery.
Added support for capacity mode on charging, with automatic
enabling as per discharging.
Hopefully last release before the final 2.0.
2004 August 18 1.99r7
Implemented the libdockapp port - this seems to close Debian bug
#227819, but it hasn't received sufficient testing.
Implemented a capacity mode for calculating time remaining (as
opposed to the normal current rate mode) - this mode samples the
remaining capacity of the battery and notes the time at which it
was sampled, and uses a history of samples to estimate the rate of
drain on the battery. From there it calculates a value for time
Also, various cleanups have gone in:
* a reworking of the scrolling code
* generic battery number support (rather than just
using two pixmaps, one for b1 and one for b2)
* stopped the battery glyph from blinking when running on AC
2004 July 19 1.99r6
Fix for Debian bug #250792 - the parser for the acpi files was
too stupid to deal with error conditions. I've now added some
basic checking to make it handle the error that caused the bug
report, but I'll need to add more later.
2004 April 23 1.99r5
Collected fixes for the collected fixes below . . .
* Manpage fixes, to reflect the reality of the current code.
* Code cleanups, to make a few things more sensible. Most notably,
the interface for setting the samplerate has changed so that it's
no longer inverted and illogical - you now say how many times you
want to sample per minute.
* Fixed an issue with initialisation - I'd moved the power_init()
call below the options parsing code, without dealing with the -m
option properly. The end result was that if you told it to monitor
a battery number, it would fail saying the battery didn't exist. I
moved the check for this out of the options parsing and after the
* Fixed a leaking file descriptor in init_ac_adapters.
* Implemented a way to handle changing batteries - reinitialise
the battery info periodically. I don't know of a better way to do
that, since we'd have to do all that parsing anyway to find out if
it had changed . . .
libdockapp is waiting, but I think that's the only change left
without more bug repots . . .
2004 April 15 1.99r4
Collected fixes for various small issues.
* Fixed a problem with placement of the window when using the
click to place mode - turned out to be a sizehints problem.
* Some fixes to the manpage.
* Reenabled the CLI build by default - the Debian patches can
handle disabling it themselves.
* Added a way to disable the scrolling message, since some users
find this annoying.
I've left the big changes that are needed (like using libdockapp,
in the hope that it'll solve the docking problems) until later, so
that I can get these smaller fixes out. Hopefully soon . . .
2004 January 12 1.99r3
. . . and a fix for a fix that didn't fix it . . .
2004 January 12 1.99r2
Some cleanups and bugfixes found by the wonderful Debian users.
It's finally in testing!
2003 November 23 1.99
Finally claimed the wmacpi name as my own . . .
Renamed wmacpi-ng and acpi-ng, renamed the header files, fixed up
For the Debian package, also made compilation of the command line
tool optional, defaulting to not building it. This is because
after the renaming, my acpi clashes with the acpi package that's
already in Debian. The command line functionality is now
accessible via the -w option to wmacpi.
This is wmacpi 1.99, so that I can have a release packaged and in
Debian before going to 2.0, so that any bugs that are left can be
found by all the extra users.
2003 September 26 0.99
Fix the last of the old wmacpi code oddities (specifically, the
APMInfo struct, which was a completely inappropriate name given we
no longer deal with APM, and because of the various code
I think this is probably as good as I can make it without getting
more feedback and the like, so I'm going to make this version
0.99, preliminary to either wmacpi-ng 1.0 or wmacpi 2.0 (depending
which direction I go with that).
2003 September 23 0.92
Fix a few more bugs, and include an option to allow the user to
specify how often to sample the ACPI data - some BIOSes disable
all interrupts while reading from the battery, which apparently
causes some interactivity issues. I have no idea why reading once
every three seconds (which is our default), but there've been some
Also fixed acpi-ng to properly handle the -a option.
2003 August 6 0.91
Fix a problem I'm seeing with docking the app - if the window name
is set to "acpi" rather than "apm" it doesn't dock . . .
2003 July 16 0.90
Make the time display show '--:--' instead of '00:00' when the
time remaining is 0 - I think this is reasonable, since it'll only
get into this state when the present rate value is 0. This only
happens when the battery is fully charged and neither discharging
or charging, or when the battery is completely drained. In any of
these states the time remaining is of very little interest, so we
don't lose anything. We also get to handle the (sadly, very
common) case where the ACPI subsystem doesn't report sane values
for the things we depend on.
2003 July 11 0.50a2
Make the time display show nothing (as opposed to 00:00) when the
time remaining is unknown, as requested by Emma Jane Hogbin.
Respect the critical level specified on the command line, and add
a new message to differentiate between the command line critical
level and the critical state reported by the battery.
Speed up the message scrolling, so that there isn't quite such a
painful delay between repeats. Also, up the speed when the battery
is low, more when it's critical, and scroll continuously when it's
Finally, add support for disabling the blinking power and battery
glyphs from the command line, as requested by Sebastian
Henschel. We still blink the battery glyph when the battery
reports hardware critical level - I think that's worth being a bit
Also, added an acpi-ng manpage.
2003 July 11 0.50a1
Properly fix the AC adapter issue - it's not much use adding the
infrastructure and then forgetting to fix the code that uses it.
Fix the time disiplay so that it doesn't try to display values
greater than 99:59, since the display area won't fit anything
2003 July 10 0.50a
Bugfixes, to handle two problems: the case where something like
the present rate or some such is "unknown" (reported initially by
Emma Jane Hogbin, and where the AC adapter is called something
other than "AC" (reported by Sebastian Henschel). This an 'a'
release because I can't test these myself . . .
2003 July 6 0.50
Finally got rid of that annoying button - that space now contains
a 'B 1' or 'B 2' (only those two at present, since I'm too lazy to
fix it so that the number is generic. It should work fine for
anyone who doesn't have a freakish system with more than two
batteries . . .)
A few more code cleanups.
2003 July 1 0.19
libacpi cleanups and reworking - we now handle the charging
battery case properly, it seems.
Also, some attempts to make error printing a bit cleaner; still a
long way to go on that, though . . .
2003 June 24 0.15
Removed process_plugin_timer(), since it was doing nothing useful
at all . . .
2003 June 23 0.14
Removed libapm.c - wmacpi-ng is specifically for ACPI, with no APM
2003 June 23 0.13
Some more code cleanups, designed to move libacpi to more of a
library than something built into wmacpi-ng. This is useful with
the seperate programs, though at present it's not used much.
2003 June 21 0.12
Added a command line tool, acpi-ng to query battery status from
the command line.
2003 May 30 0.11
Implemented multiple battery support, and averaging of the samples
in an attempt to even out the jumpiness of the timer.
2003 May 30 0.10
More major code cleanups: in particular the handling of the power
panel and the message has been cleaned up so that it's actually
sane and clean.
Next step from here is to actually implement handling of multiple
batteries, so that if there's a fully charge second battery
available it reports the correct time remaining (based on the
present rate of power consumption and the sum of the two battery's
2003 May 29 0.3
Some major reworking of the internals, to help fix the handling of
multiple batteries and such things.
2003 May 26 0.2a
Code cleanups to fix various problems with corner cases.
2003 May 26 0.2
Added support for multiple batteries: I took the simple route of
displaying only one battery per instance - to do more I'd need to
hack with the display code, and I'm not ready for that yet.
Added a -m option to specify the battery number to monitor.
2003 May 26 0.1
Changed package completely, to support the new ACPI code as of
Since this code hasn't been touched in more than a year, I figure
I might as well have a go at hacking on it . . .
-- Simon Fowler, <firstname.lastname@example.org>
2002 Feb 17 1.34
Updated ACPI statistics gathering code for the latest ACPI patch from
Intel. Now uses/checks for subsystem version 20020214+. Redone the version
check a little bit.
2001 Apr 29 1.33
Little fix to ACPI version check so that I don't have to make a new
version each time a new kernel comes out
2001 Mar 24 1.32
Split ACPI and APM portions in different source files
Added power_init() function - handles checking subsystem presence,
version, etc. Enumerates batteries in ACPI implementation
ACPI: Beginnings of multiple battery support - not fully implemented
ACPI: Get the battery ID from /proc/acpi/battery instead of hard-coding
it in - also helps with multi battery stuff
Added some stupid command line help
Added -c option to set critical battery alarm level. Defaults to
10 percent, and added -b option to make noise when this critical level
APM: Updated for critical alarm stuff
Made a 20 color "low" quality pixmap for machines running 8bit displays
Updated README with some stuff, made separate INSTALL file
2001 Mar 13 1.31
Update for intel ACPI release version 20010313
Minor updates for new /proc layout
2001 Mar 07 1.3
Update for intel ACPI release verion 20010302
Proc format changed a little bit, so updates were necessary.
Added a check for specific acpi subsystem version - since each
new version seems to have a new interface, better be safe than
As usual, please test and report to me.
This ONLY works with linux acpica 20010302. Download this version from
http://developer.intel.com/technology/iapc/acpi/downloads.htm - it's a
patch against 2.4.2
2001 Feb 28 1.21
Finally read through the ACPI specification. Hah, they had all my
questions answered :) Thus,
Confirmed remaining percentage formula (correct)
Now calculate "time remaining" according to the spec formula
Removed "battery load" hack since we now have "time remaining"
Fixed bug in display_percentage (10% didn't display right)
Released version 1.21
2001 Feb 23 1.2
Added support for ACPI. This is very untested, and not very clean.
This has been tested on machines with only ONE battery, and only
with kernel 2.4.2 (that's where ACPI started to work for me)
Added some hackery to do with ACPI. Check README.
2001 Jan 16 1.1
Fixed all the stuff so that wmapm works as advertised:
Fixed dumb bug where after charging was done new message didn't scroll.
Added support for fucked APM bioses that display stuff wrong. (See
README to learn how to enable it. Obviously, it's disabled by default)
Reorganized apminfo structure and got rid of redundancy.
Reorganized acquire_apm_info. All APM data is processed there.
Fixed display_state to do the Right Thing.
Fixed red blinking button to actually blink on critical battery, and
to stop when it isn't critical anymore. I don't think it ever worked
right in 1.0.