feat(custon): restart_interval for continuous script
parent
c3cdd516ef
commit
cb2f5c154c
|
@ -33,6 +33,12 @@ Addressed by *custom/<name>*
|
|||
You can update it manually with a signal. If no *interval* is defined,
|
||||
it is assumed that the out script loops it self.
|
||||
|
||||
*restart_interval*: ++
|
||||
typeof: integer ++
|
||||
The restart interval (in seconds).
|
||||
Can't be used with the *interval* option, so only with continuous scripts.
|
||||
Once the scripts exit, it'll be re-executed after the *restart_interval*.
|
||||
|
||||
*signal*: ++
|
||||
typeof: integer ++
|
||||
The signal number used to update the module.
|
||||
|
|
|
@ -55,12 +55,21 @@ void waybar::modules::Custom::continuousWorker() {
|
|||
exit_code = WEXITSTATUS(util::command::close(fp_, pid_));
|
||||
fp_ = nullptr;
|
||||
}
|
||||
thread_.stop();
|
||||
if (exit_code != 0) {
|
||||
output_ = {exit_code, ""};
|
||||
dp.emit();
|
||||
spdlog::error("{} stopped unexpectedly, is it endless?", name_);
|
||||
}
|
||||
if (config_["restart_interval"].isUInt()) {
|
||||
pid_ = -1;
|
||||
fp_ = util::command::open(cmd, pid_);
|
||||
if (!fp_) {
|
||||
throw std::runtime_error("Unable to open " + cmd);
|
||||
}
|
||||
thread_.sleep_for(std::chrono::seconds(config_["restart_interval"].asUInt());
|
||||
} else {
|
||||
thread_.stop();
|
||||
}
|
||||
return;
|
||||
}
|
||||
std::string output = buff;
|
||||
|
|
Loading…
Reference in New Issue