diff options
| author | streetturtle <streetturtle@users.noreply.github.com> | 2018-11-26 16:33:03 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-11-26 16:33:03 -0500 | 
| commit | 7adf7e7641b6d4a0b621b9ee386c44a2f0ae865b (patch) | |
| tree | a257f029216862d7525ca7e6e1818982b4a03085 /battery-widget | |
| parent | 1eefac87faefa22b0d3941a9fd4c76010688f59e (diff) | |
| parent | 2cf217dc6c45f206aef0e065fa3ede4c36d73e3b (diff) | |
Merge pull request #59 from stnma7e/master
Battery level is an accurate average of multiple batteries with differing capacities
Diffstat (limited to 'battery-widget')
| -rw-r--r-- | battery-widget/battery.lua | 21 | 
1 files changed, 16 insertions, 5 deletions
diff --git a/battery-widget/battery.lua b/battery-widget/battery.lua index 54a1399..a472bbf 100644 --- a/battery-widget/battery.lua +++ b/battery-widget/battery.lua @@ -69,14 +69,25 @@ end  local last_battery_check = os.time() -watch("acpi", 10, +watch("acpi -i", 10,      function(widget, stdout, stderr, exitreason, exitcode)          local batteryType          local battery_info = {} +        local capacities = {}          for s in stdout:gmatch("[^\r\n]+") do -            local _, status, charge_str, time = string.match(s, '(.+): (%a+), (%d?%d?%d)%%,? ?.*') -            table.insert(battery_info, {status = status, charge = tonumber(charge_str)}) +            local status, charge_str, time = string.match(s, '.+: (%a+), (%d?%d?%d)%%,?.*') +            if status ~= nil then +                table.insert(battery_info, {status = status, charge = tonumber(charge_str)}) +            else +                local cap_str = string.match(s, '.+:.+last full capacity (%d+)') +                table.insert(capacities, tonumber(cap_str)) +            end +        end + +        local capacity = 0 +        for i, cap in ipairs(capacities) do +            capacity = capacity + cap          end          local charge = 0 @@ -87,9 +98,9 @@ watch("acpi", 10,                  -- this is arbitrary, and maybe another metric should be used              end -            charge = charge + batt.charge +            charge = charge + batt.charge * capacities[i]          end -        charge = charge / #battery_info -- use average charge for battery icon +        charge = charge / capacity          if (charge >= 0 and charge < 15) then              batteryType = "battery-empty%s-symbolic"  | 
