Merge pull request #634 from Alexays/restart-interval
feat(custom): restart_interval for continuous script
This commit is contained in:
		
						commit
						c302116e73
					
				|  | @ -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 script 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