fix(Custom): loop script block main loop

This commit is contained in:
Alexis 2018-09-05 19:20:19 +02:00
parent 7020af7653
commit de5df09fcd
No known key found for this signature in database
GPG Key ID: 20B1EC2EBBA96BD9
3 changed files with 7 additions and 7 deletions

View File

@ -17,6 +17,7 @@ class Custom : public ALabel {
const std::string name_; const std::string name_;
waybar::util::SleeperThread thread_; waybar::util::SleeperThread thread_;
waybar::util::command::res output_;
}; };
} }

View File

@ -4,12 +4,12 @@
namespace waybar::util::command { namespace waybar::util::command {
struct cmd_res { struct res {
int exit_code; int exit_code;
std::string out; std::string out;
}; };
inline struct cmd_res exec(const std::string cmd) inline struct res exec(const std::string cmd)
{ {
FILE* fp(popen(cmd.c_str(), "r")); FILE* fp(popen(cmd.c_str(), "r"));
if (!fp) { if (!fp) {

View File

@ -24,6 +24,7 @@ void waybar::modules::Custom::worker()
} }
} }
if (can_update) { if (can_update) {
output_ = waybar::util::command::exec(config_["exec"].asString());
dp.emit(); dp.emit();
} }
thread_.sleep_for(chrono::seconds(interval)); thread_.sleep_for(chrono::seconds(interval));
@ -32,17 +33,15 @@ void waybar::modules::Custom::worker()
auto waybar::modules::Custom::update() -> void auto waybar::modules::Custom::update() -> void
{ {
auto res = waybar::util::command::exec(config_["exec"].asString());
// Hide label if output is empty // Hide label if output is empty
if (res.out.empty() || res.exit_code != 0) { if (output_.out.empty() || output_.exit_code != 0) {
label_.hide(); label_.hide();
label_.set_name(""); label_.set_name("");
} else { } else {
label_.set_name("custom-" + name_); label_.set_name("custom-" + name_);
auto str = fmt::format(format_, res.out); auto str = fmt::format(format_, output_.out);
label_.set_text(str); label_.set_text(str);
label_.set_tooltip_text(str); label_.set_tooltip_text(str);
label_.show(); label_.show();
} }
} }