bat: expose information on battery wear and tear
Modern batteries should expose information about their design capacity which we can compare to current capacity and deduce how much 'wear' the battery got and expose that as a negative value percentage. Feature sent in August took a while to convince the maintainer many modern batteries provide this information. Signed-off-by: Adrian C. (anrxc) <anrxc@sysphere.org>
This commit is contained in:
parent
76269896fc
commit
946271c41d
7
README
7
README
|
@ -159,11 +159,12 @@ vicious.widgets.uptime
|
||||||
for 5 minutes and 6th for 15 minutes
|
for 5 minutes and 6th for 15 minutes
|
||||||
|
|
||||||
vicious.widgets.bat
|
vicious.widgets.bat
|
||||||
- provides state, charge, and remaining time for a requested battery
|
- provides state, charge, remaining time and wear for a requested
|
||||||
|
battery
|
||||||
- takes battery ID as an argument, i.e. "BAT0"
|
- takes battery ID as an argument, i.e. "BAT0"
|
||||||
- returns 1st value as state of requested battery, 2nd as charge
|
- returns 1st value as state of requested battery, 2nd as charge
|
||||||
level in percent and 3rd as remaining (charging or discharging)
|
level in percent, 3rd as remaining (charging or discharging)
|
||||||
time
|
time and 4th as the wear level in percent
|
||||||
|
|
||||||
vicious.widgets.mem
|
vicious.widgets.mem
|
||||||
- provides RAM and Swap usage statistics
|
- provides RAM and Swap usage statistics
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
-- Licensed under the GNU General Public License v2
|
-- Licensed under the GNU General Public License v2
|
||||||
-- * (c) 2010, Adrian C. <anrxc@sysphere.org>
|
-- * (c) 2010, Adrian C. <anrxc@sysphere.org>
|
||||||
|
-- * (c) 2013, NormalRa <normalrawr@gmail.com>
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
|
|
||||||
-- {{{ Grab environment
|
-- {{{ Grab environment
|
||||||
|
@ -15,7 +16,7 @@ local math = {
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
|
|
||||||
-- Bat: provides state, charge, and remaining time for a requested battery
|
-- Bat: provides state, charge, remaining time, and wear for a requested battery
|
||||||
-- vicious.widgets.bat
|
-- vicious.widgets.bat
|
||||||
local bat = {}
|
local bat = {}
|
||||||
|
|
||||||
|
@ -35,7 +36,7 @@ local function worker(format, warg)
|
||||||
|
|
||||||
-- Check if the battery is present
|
-- Check if the battery is present
|
||||||
if battery.present ~= "1\n" then
|
if battery.present ~= "1\n" then
|
||||||
return {battery_state["Unknown\n"], 0, "N/A"}
|
return {battery_state["Unknown\n"], 0, "N/A", 0}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,14 +46,17 @@ local function worker(format, warg)
|
||||||
-- Get capacity information
|
-- Get capacity information
|
||||||
if battery.charge_now then
|
if battery.charge_now then
|
||||||
remaining, capacity = battery.charge_now, battery.charge_full
|
remaining, capacity = battery.charge_now, battery.charge_full
|
||||||
|
capacity_design = battery.charge_full_design or capacity
|
||||||
elseif battery.energy_now then
|
elseif battery.energy_now then
|
||||||
remaining, capacity = battery.energy_now, battery.energy_full
|
remaining, capacity = battery.energy_now, battery.energy_full
|
||||||
|
capacity_design = battery.energy_full_design or capacity
|
||||||
else
|
else
|
||||||
return {battery_state["Unknown\n"], 0, "N/A"}
|
return {battery_state["Unknown\n"], 0, "N/A", 0}
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Calculate percentage (but work around broken BAT/ACPI implementations)
|
-- Calculate capacity and wear percentage (but work around broken BAT/ACPI implementations)
|
||||||
local percent = math.min(math.floor(remaining / capacity * 100), 100)
|
local percent = math.min(math.floor(remaining / capacity * 100), 100)
|
||||||
|
local wear = math.floor(100 - capacity / capacity_design * 100)
|
||||||
|
|
||||||
|
|
||||||
-- Get charge information
|
-- Get charge information
|
||||||
|
@ -61,7 +65,7 @@ local function worker(format, warg)
|
||||||
elseif battery.power_now then
|
elseif battery.power_now then
|
||||||
rate = tonumber(battery.power_now)
|
rate = tonumber(battery.power_now)
|
||||||
else
|
else
|
||||||
return {state, percent, "N/A"}
|
return {state, percent, "N/A", wear}
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Calculate remaining (charging or discharging) time
|
-- Calculate remaining (charging or discharging) time
|
||||||
|
@ -73,7 +77,7 @@ local function worker(format, warg)
|
||||||
elseif state == "-" then
|
elseif state == "-" then
|
||||||
timeleft = tonumber(remaining) / tonumber(rate)
|
timeleft = tonumber(remaining) / tonumber(rate)
|
||||||
else
|
else
|
||||||
return {state, percent, time}
|
return {state, percent, time, wear}
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Calculate time
|
-- Calculate time
|
||||||
|
@ -83,7 +87,7 @@ local function worker(format, warg)
|
||||||
time = string.format("%02d:%02d", hoursleft, minutesleft)
|
time = string.format("%02d:%02d", hoursleft, minutesleft)
|
||||||
end
|
end
|
||||||
|
|
||||||
return {state, percent, time}
|
return {state, percent, time, wear}
|
||||||
end
|
end
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue