mirror of
https://github.com/rad4day/Waybar.git
synced 2023-12-21 10:22:59 +01:00
Merge pull request #964 from Ocisra/master
Add an option to use battery design capacity
This commit is contained in:
commit
66e5fda418
@ -22,6 +22,11 @@ The *battery* module displays the current capacity and state (eg. charging) of y
|
|||||||
typeof: integer ++
|
typeof: integer ++
|
||||||
Define the max percentage of the battery, for when you've set the battery to stop charging at a lower level to save it. For example, if you've set the battery to stop at 80% that will become the new 100%.
|
Define the max percentage of the battery, for when you've set the battery to stop charging at a lower level to save it. For example, if you've set the battery to stop at 80% that will become the new 100%.
|
||||||
|
|
||||||
|
*design-capacity*: ++
|
||||||
|
typeof: bool ++
|
||||||
|
default: false ++
|
||||||
|
Option to use the battery design capacity instead of it's current maximal capacity.
|
||||||
|
|
||||||
*interval*: ++
|
*interval*: ++
|
||||||
typeof: integer ++
|
typeof: integer ++
|
||||||
default: 60 ++
|
default: 60 ++
|
||||||
|
@ -142,12 +142,14 @@ const std::tuple<uint8_t, float, std::string> waybar::modules::Battery::getInfos
|
|||||||
uint32_t total_power = 0; // μW
|
uint32_t total_power = 0; // μW
|
||||||
uint32_t total_energy = 0; // μWh
|
uint32_t total_energy = 0; // μWh
|
||||||
uint32_t total_energy_full = 0;
|
uint32_t total_energy_full = 0;
|
||||||
|
uint32_t total_energy_full_design = 0;
|
||||||
std::string status = "Unknown";
|
std::string status = "Unknown";
|
||||||
for (auto const& item : batteries_) {
|
for (auto const& item : batteries_) {
|
||||||
auto bat = item.first;
|
auto bat = item.first;
|
||||||
uint32_t power_now;
|
uint32_t power_now;
|
||||||
uint32_t energy_full;
|
uint32_t energy_full;
|
||||||
uint32_t energy_now;
|
uint32_t energy_now;
|
||||||
|
uint32_t energy_full_design;
|
||||||
std::string _status;
|
std::string _status;
|
||||||
std::ifstream(bat / "status") >> _status;
|
std::ifstream(bat / "status") >> _status;
|
||||||
auto rate_path = fs::exists(bat / "current_now") ? "current_now" : "power_now";
|
auto rate_path = fs::exists(bat / "current_now") ? "current_now" : "power_now";
|
||||||
@ -156,12 +158,15 @@ const std::tuple<uint8_t, float, std::string> waybar::modules::Battery::getInfos
|
|||||||
std::ifstream(bat / now_path) >> energy_now;
|
std::ifstream(bat / now_path) >> energy_now;
|
||||||
auto full_path = fs::exists(bat / "charge_full") ? "charge_full" : "energy_full";
|
auto full_path = fs::exists(bat / "charge_full") ? "charge_full" : "energy_full";
|
||||||
std::ifstream(bat / full_path) >> energy_full;
|
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") {
|
if (_status != "Unknown") {
|
||||||
status = _status;
|
status = _status;
|
||||||
}
|
}
|
||||||
total_power += power_now;
|
total_power += power_now;
|
||||||
total_energy += energy_now;
|
total_energy += energy_now;
|
||||||
total_energy_full += energy_full;
|
total_energy_full += energy_full;
|
||||||
|
total_energy_full_design += energy_full_design;
|
||||||
}
|
}
|
||||||
if (!adapter_.empty() && status == "Discharging") {
|
if (!adapter_.empty() && status == "Discharging") {
|
||||||
bool online;
|
bool online;
|
||||||
@ -182,6 +187,10 @@ const std::tuple<uint8_t, float, std::string> waybar::modules::Battery::getInfos
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
float capacity = ((float)total_energy * 100.0f / (float) total_energy_full);
|
float capacity = ((float)total_energy * 100.0f / (float) total_energy_full);
|
||||||
|
// Handle design-capacity
|
||||||
|
if (config_["design-capacity"].isBool() ? config_["design-capacity"].asBool() : false) {
|
||||||
|
capacity = ((float)total_energy * 100.0f / (float) total_energy_full_design);
|
||||||
|
}
|
||||||
// Handle full-at
|
// Handle full-at
|
||||||
if (config_["full-at"].isUInt()) {
|
if (config_["full-at"].isUInt()) {
|
||||||
auto full_at = config_["full-at"].asUInt();
|
auto full_at = config_["full-at"].asUInt();
|
||||||
|
Loading…
Reference in New Issue
Block a user