From c85021228832cbea002ef38a468b84bbaf36f41c Mon Sep 17 00:00:00 2001 From: Petri Lehtinen Date: Sun, 28 Mar 2021 20:07:35 +0300 Subject: [PATCH] Use the correct battery status when multiple batteries are present --- src/modules/battery.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/modules/battery.cpp b/src/modules/battery.cpp index 85774697..49e23dec 100644 --- a/src/modules/battery.cpp +++ b/src/modules/battery.cpp @@ -135,6 +135,16 @@ void waybar::modules::Battery::refreshBatteries() { } } +// Unknown > Full > Not charging > Discharging > Charging +static bool status_gt(const std::string& a, const std::string& b) { + if (a == b) return false; + else if (a == "Unknown") return true; + else if (a == "Full" && b != "Unknown") return true; + else if (a == "Not charging" && b != "Unknown" && b != "Full") return true; + else if (a == "Discharging" && b != "Unknown" && b != "Full" && b != "Not charging") return true; + return false; +} + const std::tuple waybar::modules::Battery::getInfos() { std::lock_guard guard(battery_list_mutex_); @@ -160,7 +170,9 @@ const std::tuple waybar::modules::Battery::g std::ifstream(bat / full_path) >> energy_full; auto full_design_path = fs::exists(bat / "charge_full_design") ? "charge_full_design" : "energy_full_design"; std::ifstream(bat / full_design_path) >> energy_full_design; - if (_status != "Unknown") { + + // Show the "smallest" status among all batteries + if (status_gt(status, _status)) { status = _status; } total_power += power_now;