diff --git a/include/sway/output.h b/include/sway/output.h index 2aa1b278..04202976 100644 --- a/include/sway/output.h +++ b/include/sway/output.h @@ -96,6 +96,9 @@ void output_damage_box(struct sway_output *output, struct wlr_box *box); void output_damage_whole_container(struct sway_output *output, struct sway_container *con); +bool output_match_name_or_id(struct sway_output *output, + const char *name_or_id); + // this ONLY includes the enabled outputs struct sway_output *output_by_name_or_id(const char *name_or_id); diff --git a/sway/config/output.c b/sway/config/output.c index 352d7f7c..45d2441b 100644 --- a/sway/config/output.c +++ b/sway/config/output.c @@ -722,12 +722,11 @@ void apply_output_config_to_outputs(struct output_config *oc) { // this is during startup then there will be no container and config // will be applied during normal "new output" event from wlroots. bool wildcard = strcmp(oc->name, "*") == 0; - char id[128]; struct sway_output *sway_output, *tmp; wl_list_for_each_safe(sway_output, tmp, &root->all_outputs, link) { - char *name = sway_output->wlr_output->name; - output_get_identifier(id, sizeof(id), sway_output); - if (wildcard || !strcmp(name, oc->name) || !strcmp(id, oc->name)) { + if (output_match_name_or_id(sway_output, oc->name)) { + char id[128]; + output_get_identifier(id, sizeof(id), sway_output); struct output_config *current = get_output_config(id, sway_output); if (!current) { // No stored output config matched, apply oc directly diff --git a/sway/desktop/output.c b/sway/desktop/output.c index fe3cdaf1..2255b551 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -36,8 +36,12 @@ #include #endif -static bool output_match_name_or_id(struct sway_output *output, +bool output_match_name_or_id(struct sway_output *output, const char *name_or_id) { + if (strcmp(name_or_id, "*") == 0) { + return true; + } + char identifier[128]; output_get_identifier(identifier, sizeof(identifier), output); return strcasecmp(identifier, name_or_id) == 0