From 2d9bcb1a2df916e4a6846659ce91c5cd8038097e Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 26 Apr 2019 14:07:31 +0200 Subject: [PATCH] feat(Cpu): dynamic fmt args --- src/modules/cpu.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/modules/cpu.cpp b/src/modules/cpu.cpp index 880a05a5..656436d1 100644 --- a/src/modules/cpu.cpp +++ b/src/modules/cpu.cpp @@ -13,13 +13,20 @@ waybar::modules::Cpu::Cpu(const std::string& id, const Json::Value& config) } auto waybar::modules::Cpu::update() -> void { - // TODO: as creating dynamic fmt::arg arrays is buggy we have to calc both - auto cpu_load = getCpuLoad(); - auto [cpu_usage, tooltip] = getCpuUsage(); - if (tooltipEnabled()) { - label_.set_tooltip_text(tooltip); + std::vector> args; + if (format_.find("{load}") != std::string::npos) { + auto cpu_load = getCpuLoad(); + args.emplace_back(fmt::internal::make_arg(fmt::arg("load", cpu_load))); } - label_.set_markup(fmt::format(format_, fmt::arg("load", cpu_load), fmt::arg("usage", cpu_usage))); + if (format_.find("{usage}") != std::string::npos) { + auto [cpu_usage, tooltip] = getCpuUsage(); + args.emplace_back(fmt::internal::make_arg(fmt::arg("usage", cpu_usage))); + if (tooltipEnabled()) { + label_.set_tooltip_text(tooltip); + } + } + label_.set_markup( + fmt::vformat(format_, fmt::basic_format_args(args.data(), args.size()))); } uint16_t waybar::modules::Cpu::getCpuLoad() {