Initial widget code was sent by Benedikt Sauer. After some cleanup it
is ready to go into master. It uses data exposed trough /sys and it is
used in the exact same way as the bat widget (and /proc). This widget
will replace batat and acpitool, it will be moved to contrib and
retired.
Thanks to Felix for bringing this to my attention. Obviously there was
already a safety net for feeding progressbars and graphs... and while
this makes for a good coding practice it's not a big deal. We have
widgets of type textbox for one, and a lot of string concatenation
happens. Strings are formatted, markup is applied...
If we return "N/A" like we usually do then format string "$1$2" would
look like "N/AN/A". If "/" is returned a progressbar could be
broken. Now returns are: symbol for state "unknown", 0 for battery
charge, N/A for remaining time.
Previous commit had redudant string > number conversions, and only
covered one scenario - when battery is charged. bioe007 suggested to
use math.min. Now lets explain why this is needed. Some (lousy)
batteries report "remaining capacity" higher than "last full capacity"
when AC is connected. That leads to battery charges like "160%".
A lot of people expect widgets like this one to auto-magically work,
and somehow don't understand that *they* need to make sure there is a
source of information. Is ACPI module loaded? Is battery info exposed
in the same place that widget expects by default? You need to answer
those questions before loading the widget and sending me "bug"
reports.
The widget reads /proc/acpi/battery/*/{info,state} and doesn't require
an external utility like 'acpi' or 'acpitool'. It returns state,
charge and remaining time information, just like the old bat (now
batat) widget. Using /sys/class/power_supply we would need to open
much more file descriptors so we use /proc for now.
It's time for a standalone battery widget that reads
/proc/acpi/battery/*/{info,state} alone. However the old battery
widget that uses 'acpitool' will not be deleted, let it serve as an
alternative widget as a convenience. Some might also prefer it over
reading multiple files in /proc
Vicious is a modular widget library for 'awesome' window manager,
derived from the 'Wicked' widget library.
Summary of changes:
* Original wicked code modularized
* Widgets ported from Wicked:
- CPU, MEM, FS, NET, Date, Uptime, MPD
* CPU widget rewritten, uses pattern matching
* MEM widget rewritten, uses pattern matching
- Swap widget merged with MEM widget type
* FS widget rewritten, uses pattern matching
- Also fixed padding in the process
* NET widget rewritten, uses pattern matching
* MPD widget rewritten, a bit more versatile
* Removed deprecated helper functions
* Widgets written for Vicious:
- Thermal, Battery, Mbox, OrgMode, Volume, Entropy,
Disk I/O, System Load, Wireless, Pacman, Maildir