Replaces the outputOrder patch.
This avoids recalculating positions and allows to arrange monitors in any order, not just from left to right.
The order in which monitors are defined in config.h still matters but it's just the order in the list, not the actual position.
GRIYU3BNZXANVGAYDQNJ7INQH4QYRRYWTFBEEHWT2Q6COSUEJ5LAC
KDTN5PQWSUUS7QBDQD4Z5WMXQYOZSQN3ENAXYVE3GRSTPUUZ2U7AC
BFWKVWAIUKHCZVRA62GW6QZUEUKQLW365HUWIVKTEIPJNJSOZBAQC
4STIHURYLRLYMGSU325GCLA4C6SURA4TXRNBWBTWST2C6R2H6U2AC
7JQD43QS55Q2YI6OQ6BGVAHSHKQHI3TKD6PXIKYKJZXOVOWFHMWAC
7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC
D425ND7AT3F7QJ3CCSESMVDOC3J5C5P32M5SJDBHECZJXLHNQ2FAC
JRXMQ2GKMY3ZPLMON4D7OPHU62B4A7PV5FXLYBQMJRNCLVKTUALQC
7QPBYBLDDSHGGIU7CWCX5PKUUECVBDTH4H6X2TLLH3HMXXCYVAEAC
5XQORC75PLJP67TLAYROELKQ7RNQZFZ4PLOWJ7EKAVPNUDCMW2BQC
wlr_output_layout_add(output_layout, wlr_output, x, 0);
wl_list_for_each_reverse(moni, &mons, link) {
/* All monitors to the right of the new one must be moved */
if (moni == m)
break;
wlr_output_layout_move(output_layout, moni->wlr_output, moni->w.x + m->wlr_output->width, 0);
}
wlr_output_layout_add(output_layout, wlr_output, r->x, r->y);