dwl

My patch set and modifications to dwl
git clone git://git.ethandl.dev/dwl
Log | Files | Refs | README | LICENSE

commit ba7dcb2dea2d5dc46b73b6b9194daab94a325a05
parent c8a9f634515cbf5a943a982bb4b603682c0eca22
Author: Leonardo Hernández Hernández <leohdz172@protonmail.com>
Date:   Sat, 10 Sep 2022 23:45:57 -0500

don't try to move outputs when its x,y hasn't change

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

Diffstat:
Mdwl.c | 8++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/dwl.c b/dwl.c @@ -1607,6 +1607,7 @@ outputmgrapplyortest(struct wlr_output_configuration_v1 *config, int test) /* Then enable outputs that need to */ wl_list_for_each(config_head, &config->heads, link) { struct wlr_output *wlr_output = config_head->state.output; + Monitor *m = wlr_output->data; if (!config_head->state.enabled) continue; @@ -1619,8 +1620,11 @@ outputmgrapplyortest(struct wlr_output_configuration_v1 *config, int test) 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); + /* 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); wlr_output_set_transform(wlr_output, config_head->state.transform); wlr_output_set_scale(wlr_output, config_head->state.scale);