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* ++
|
*output* ++
|
||||||
typeof: string|array ++
|
typeof: string|array ++
|
||||||
Specifies on which screen this bar will be displayed. Exclamation mark(*!*) can be used to exclude specific output.
|
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* ++
|
*position* ++
|
||||||
typeof: string ++
|
typeof: string ++
|
||||||
|
|
|
@ -124,9 +124,21 @@ bool isValidOutput(const Json::Value &config, const std::string &name,
|
||||||
const std::string &identifier) {
|
const std::string &identifier) {
|
||||||
if (config["output"].isArray()) {
|
if (config["output"].isArray()) {
|
||||||
for (auto const &output_conf : config["output"]) {
|
for (auto const &output_conf : config["output"]) {
|
||||||
if (output_conf.isString() &&
|
if (output_conf.isString()) {
|
||||||
(output_conf.asString() == name || output_conf.asString() == identifier)) {
|
auto config_output = output_conf.asString();
|
||||||
return true;
|
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;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue