dwl

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

commit 80a685ee51da69ae0a7bae11620c5f33c3cd2de2
parent 5221a329e254627c186ba8e4d68f9595d4e3158a
Author: Stivvo <stivvo01@gmail.com>
Date:   Sat, 31 Oct 2020 17:10:06 +0100

Fix crash with no monitors left

When there's no monitors left, prevent the while in cleanupmon() to
become an infinite loop

Also switch to the left monitors instead of the right

Diffstat:
Mdwl.c | 7+++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/dwl.c b/dwl.c @@ -696,20 +696,19 @@ cleanupmon(struct wl_listener *listener, void *data) { struct wlr_output *wlr_output = data; Monitor *m = wlr_output->data; + int nmons = wl_list_length(&mons), i = 0; wl_list_remove(&m->destroy.link); wl_list_remove(&m->frame.link); wl_list_remove(&m->link); wlr_output_layout_remove(output_layout, m->wlr_output); - updatemons(); do // don't switch to disabled mons - selmon = wl_container_of(mons.next, selmon, link); - while (!selmon->wlr_output->enabled); + selmon = wl_container_of(mons.prev, selmon, link); + while (!selmon->wlr_output->enabled && i++ < nmons); focusclient(selclient(), focustop(selmon), 1); closemon(m); - free(m); }