first disable requested monitors, then enable and/or change mode, x and y, etc. This is mostly what sway does
LWFDWL3LH5PLBYUJJKI6C24PXWIRLE2UF64GVFLB23JWBSJHJQDQC ECWSMUGSFAFGG3BNRFXTRJRC3NLZF67M5RSSW6AXAZP42O3F4VPQC LYYPWYVJLPUXGDW4QBAUY3643G3ZUNLL65VCYM42Z7WPGYE3E6JQC ZSSVUMLBSC7P4VMBM5GPNOBJGCUGYQGSU5SXIIZWX54Y674EZWDAC NLOBELMSKHUSKSMPZ2QSDVIOJRGWV7HNXNIKZ55TMUCH7DI73TAAC 7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC AIDYDXHNT7UR4GXSJFEYFSB4NG4VLJFBRU655SRHWRRXSOZTRWHAC RFDLUIJFB6GDI3FPSAWV66ZLOSMCJG6OWKORIWTVUZPSGTK4OL5QC Z5S64ZSKKSAUU62WBIQFYQP6B6M2STGV7PSJKEL2FGC4VRLWFLDAC wlr_output_enable(wlr_output, config_head->state.enabled);if (config_head->state.enabled) {if (config_head->state.mode)wlr_output_set_mode(wlr_output, config_head->state.mode);elsewlr_output_set_custom_mode(wlr_output,config_head->state.custom_mode.width,config_head->state.custom_mode.height,config_head->state.custom_mode.refresh);wlr_output_layout_move(output_layout, wlr_output,config_head->state.x, config_head->state.y);wlr_output_set_transform(wlr_output, config_head->state.transform);wlr_output_set_scale(wlr_output, config_head->state.scale);
if (!wlr_output->enabled || config_head->state.enabled)continue;wlr_output_enable(wlr_output, 0);if (test) {ok &= wlr_output_test(wlr_output);wlr_output_rollback(wlr_output);} else {ok &= wlr_output_commit(wlr_output);
if (ok && !test)wlr_output_commit(config_head->state.output);
struct wlr_output *wlr_output = config_head->state.output;if (!config_head->state.enabled)continue;wlr_output_enable(wlr_output, 1);if (config_head->state.mode)wlr_output_set_mode(wlr_output, config_head->state.mode);
wlr_output_rollback(config_head->state.output);
wlr_output_set_custom_mode(wlr_output,config_head->state.custom_mode.width,config_head->state.custom_mode.height,config_head->state.custom_mode.refresh);wlr_output_layout_move(output_layout, wlr_output,config_head->state.x, config_head->state.y);wlr_output_set_transform(wlr_output, config_head->state.transform);wlr_output_set_scale(wlr_output, config_head->state.scale);if (test) {ok &= wlr_output_test(wlr_output);wlr_output_rollback(wlr_output);} else {ok &= wlr_output_commit(wlr_output);}