d5c69a9d60
`print_battery_info` computes `batt_info.percentage_remaining` by dividing batt_info.remaining by `full`. If `full` is `0` then the battery remaining will be reported as "inf". Before this, it tries to set `full` to either the design capacity or to the last known good charge. It determines if these values are available by checking whether their fields in `batt_info` are non-negative. As it initialized `batt_info` with values of `-1`, a non-negative value implies that something has provided a value. `slurp_all_batteries` and `add_battery_info` however initialize these fields to zero, so if these functions are called then `batt_info.full_design` will always be used. This means that on systems that don't provide a value for design capacity the percentage remaining will be reported as "inf", unless the user has set `last_full_capacity` to `true` in their `i3status.conf`. This patch changes `print_battery_info` to expect values for the battery capacity to be strictly greater than zero. This seems reasonable as a battery with a capacity of zero isn't useful. An alternative solution would be to change `slurp_all_batteries` and `add_battery_info` to initialize `batt_info` with `-1`, as `print_battery_info` does. This is less appealing as `add_battery_info` is accumulating the values, so using `-1` would introduce off-by-one errors without additional code to avoid them. |
||
---|---|---|
contrib | ||
include | ||
man | ||
src | ||
testcases | ||
travis | ||
yajl-fallback/yajl | ||
.clang-format | ||
.gitignore | ||
.travis.yml | ||
CHANGELOG | ||
CONTRIBUTING.md | ||
i3status.c | ||
i3status.conf | ||
I3STATUS_VERSION | ||
LICENSE | ||
Makefile | ||
README.md |
i3status
Description
i3status is a small program for generating a status bar for i3bar, dzen2, xmobar or similar programs. It is designed to be very efficient by issuing a very small number of system calls, as one generally wants to update such a status line every second. This ensures that even under high load, your status bar is updated correctly. Also, it saves a bit of energy by not hogging your CPU as much as spawning the corresponding amount of shell commands would.
Development
i3status has the following dependencies:
- libconfuse-dev
- libyajl-dev
- libasound2-dev
- libnl-genl-3-dev
- libcap2-bin (for getting network status without root permissions)
- asciidoc (only for the documentation)
- libpulse-dev (for getting the current volume using PulseAudio)
On debian-based systems, the following line will install all requirements:
apt-get install libconfuse-dev libyajl-dev libasound2-dev libiw-dev asciidoc libcap2-bin libpulse-dev libnl-genl-3-dev
Upstream
i3status is developed at https://github.com/i3/i3status
Compilation
Compiling is done with the usual make-line
make && sudo make install