aboutsummaryrefslogtreecommitdiff
path: root/sway/commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/commands.c')
-rw-r--r--sway/commands.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/sway/commands.c b/sway/commands.c
index eb77c172..7605a36b 100644
--- a/sway/commands.c
+++ b/sway/commands.c
@@ -561,7 +561,6 @@ static enum cmd_status cmd_orientation(int argc, char **argv) {
}
static enum cmd_status cmd_output(int argc, char **argv) {
- if (!config->reading) return CMD_FAILURE;
if (!checkarg(argc, "output", EXPECTED_AT_LEAST, 1)) {
return CMD_FAILURE;
}
@@ -619,9 +618,23 @@ static enum cmd_status cmd_output(int argc, char **argv) {
list_add(config->output_configs, output);
- sway_log(L_DEBUG, "Configured output %s to %d x %d @ %d, %d",
+ sway_log(L_DEBUG, "Config stored for output %s (%d x %d @ %d, %d)",
output->name, output->width, output->height, output->x, output->y);
+ if (output->name) {
+ // Try to find the output container and apply configuration now. If
+ // this is during startup then there will be no container and config
+ // will be applied during normal "new output" event from wlc.
+ swayc_t *cont = NULL;
+ for (int i = 0; i < root_container.children->length; ++i) {
+ cont = root_container.children->items[i];
+ if (cont->name && strcmp(cont->name, output->name) == 0) {
+ apply_output_config(output, cont);
+ break;
+ }
+ }
+ }
+
return CMD_SUCCESS;
}