when using wlr_output_layout_move() wlroots internally change the state of the output to manually configured and when updating the layout these outputs aren't ignored by wlroots, leaving us at our own
GZ5EL7AQY4CDL5IBPXUF4XKIR7NF6P5HZXXF2BUNK5YJIW5XWUTQC
wlr_output_layout_move(output_layout, wlr_output,
config_head->state.x, config_head->state.y);
/* Don't move monitors if position wouldn't change, this to avoid
* wlroots marking the output as manually configured */
if (m->m.x != config_head->state.x || m->m.y != config_head->state.y)
wlr_output_layout_move(output_layout, wlr_output,
config_head->state.x, config_head->state.y);