diff --git a/RELEASE-NOTES-next b/RELEASE-NOTES-next index c99e27d7b..f8b6c65cc 100644 --- a/RELEASE-NOTES-next +++ b/RELEASE-NOTES-next @@ -29,6 +29,7 @@ working. Please reach out to us in that case! • i3-input: add different exit codes for when i3-input fails • allow ppt values in move direction and move position commands • i3bar: add coordinates relative to the current output in i3bar click events + • i3bar: add “nonprimary” output option ┌────────────────────────────┐ │ Bugfixes │ diff --git a/docs/userguide b/docs/userguide index 5f98206ee..5773e96b1 100644 --- a/docs/userguide +++ b/docs/userguide @@ -1484,9 +1484,16 @@ options for different outputs by using multiple 'bar' blocks. To make a particular i3bar instance handle multiple outputs, specify the output directive multiple times. +These output names have a special meaning: + +primary:: + Selects the output that is configured as primary in the X server. +nonprimary:: + Selects every output that is not configured as primary in the X server. + *Syntax*: --------------- -output primary| +output primary|nonprimary| --------------- *Example*: diff --git a/i3bar/src/outputs.c b/i3bar/src/outputs.c index 46b9c9548..168f3eefe 100644 --- a/i3bar/src/outputs.c +++ b/i3bar/src/outputs.c @@ -192,11 +192,12 @@ static int outputs_end_map_cb(void *params_) { /* See if we actually handle that output */ if (config.num_outputs > 0) { + const bool is_primary = params->outputs_walk->primary; bool handle_output = false; for (int c = 0; c < config.num_outputs; c++) { - if (strcasecmp(params->outputs_walk->name, config.outputs[c]) == 0 || - (strcasecmp(config.outputs[c], "primary") == 0 && - params->outputs_walk->primary)) { + if ((strcasecmp(params->outputs_walk->name, config.outputs[c]) == 0) || + (strcasecmp(config.outputs[c], "primary") == 0 && is_primary) || + (strcasecmp(config.outputs[c], "nonprimary") == 0 && !is_primary)) { handle_output = true; break; }