Do not canonicalize special output names

canonicalize_output_name allowed the "primary" special output name to
be canonicalized, thus converting it to the name of whatever output
was the primary output at the time. This caused settings
(specifically, i3bar output and tray_output settings) to be stored as
specific output names, instead of the intended special names whose
referred output may change as the system's configuration (i.e. current
primary output) changes.

Add a check to canonicalize_output_name to return the name as-is if it
is the special name "primary".
This commit is contained in:
Vladimir Panteleev
2017-09-19 14:46:27 +00:00
parent caae4db0bc
commit 760b2e1b4a
2 changed files with 44 additions and 0 deletions

View File

@ -580,6 +580,10 @@ static void dump_bar_bindings(yajl_gen gen, Barconfig *config) {
}
static char *canonicalize_output_name(char *name) {
/* Do not canonicalize special output names. */
if (strcasecmp(name, "primary") == 0) {
return name;
}
Output *output = get_output_by_name(name, false);
return output ? output_primary_name(output) : name;
}