config:output:Allow multiple exclusions & wildcard
Covers the use case where needing to exclude more than 1 output but still include all other displays. e.g. I have 3 monitors: laptop + HD + 4K; and 3 bar types: - The main bar is on the laptop. `output: "laptop-monitor-id"` - The 4K has a specific waybar bar-1 configuration. `output: "4K-monitor-id"` - I want all other displays (3rd HD monitor / any HDMI output when presenting) to have a plain bar: `output: ["!laptop-monitor-id", "!4k-monitor-id", "*"]`
This commit is contained in:
		
							parent
							
								
									9a0dbd555d
								
							
						
					
					
						commit
						90206f55be
					
				|  | @ -30,6 +30,7 @@ Also a minimal example configuration can be found on the at the bottom of this m | |||
| *output* ++ | ||||
| 	typeof: string|array ++ | ||||
| 	Specifies on which screen this bar will be displayed. Exclamation mark(*!*) can be used to exclude specific output. | ||||
| 	In an array, star '*\**' can be used at the end to accept all outputs, in case all previous entries are exclusions. | ||||
| 
 | ||||
| *position* ++ | ||||
| 	typeof: string ++ | ||||
|  |  | |||
|  | @ -124,9 +124,21 @@ bool isValidOutput(const Json::Value &config, const std::string &name, | |||
|                    const std::string &identifier) { | ||||
|   if (config["output"].isArray()) { | ||||
|     for (auto const &output_conf : config["output"]) { | ||||
|       if (output_conf.isString() && | ||||
|           (output_conf.asString() == name || output_conf.asString() == identifier)) { | ||||
|         return true; | ||||
|       if (output_conf.isString()) { | ||||
|         auto config_output = output_conf.asString(); | ||||
|         if (config_output.substr(0, 1) == "!") { | ||||
|           if (config_output.substr(1) == name || config_output.substr(1) == identifier) { | ||||
|             return false; | ||||
|           } else { | ||||
|             continue; | ||||
|           } | ||||
|         } | ||||
|         if (config_output == name || config_output == identifier) { | ||||
|           return true; | ||||
|         } | ||||
|         if (config_output.substr(0, 1) == "*") { | ||||
|           return true; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     return false; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue