myvxwm

[fork] my vxwm config (optimised for my T480)
git clone https://git.lukeonline.net/repos/myvxwm
Log | Files | Refs | README | LICENSE

commit 3f5850b1255ea1543c13385bf45caa1c673222b8
parent 79c26e4baa0a7521e8cbc8d5cfa12e68040bc4db
Author: wh1tepearl <wh1tepearl@gmail.com>
Date:   Mon, 16 Feb 2026 23:35:41 +0000

Fix tiling - canvas switch

Diffstat:
Mvxwm.c | 59++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 54 insertions(+), 5 deletions(-)

diff --git a/vxwm.c b/vxwm.c @@ -1418,10 +1418,10 @@ movemouse(const Arg *arg) cc = cc->next; } - +#if !INFINITE_TAGS if (cc) { Client *cl1, *cl2, ocl1; - + if (!selmon->lt[selmon->sellt]->arrange) return; cl1 = c; @@ -1433,21 +1433,70 @@ movemouse(const Arg *arg) cl1->y = cl2->y; cl1->w = cl2->w; cl1->h = cl2->h; - + cl2->win = ocl1.win; strcpy(cl2->name, ocl1.name); cl2->x = ocl1.x; cl2->y = ocl1.y; cl2->w = ocl1.w; cl2->h = ocl1.h; - + selmon->sel = cl2; c = cc; focus(c); - + arrange(cl1->mon); } +#else // TODO: make this an option in modules.h + if (cc) { + Client *cl1, *cl2, ocl1; + + if (!selmon->lt[selmon->sellt]->arrange) return; + + cl1 = c; + cl2 = cc; + ocl1 = *cl1; + + strcpy(cl1->name, cl2->name); + cl1->win = cl2->win; + cl1->x = cl2->x; + cl1->y = cl2->y; + cl1->w = cl2->w; + cl1->h = cl2->h; + + cl2->win = ocl1.win; + strcpy(cl2->name, ocl1.name); + cl2->x = ocl1.x; + cl2->y = ocl1.y; + cl2->w = ocl1.w; + cl2->h = ocl1.h; + + int tmp_cx = cl1->saved_cx; + int tmp_cy = cl1->saved_cy; + int tmp_cw = cl1->saved_cw; + int tmp_ch = cl1->saved_ch; + int tmp_was = cl1->was_on_canvas; + + cl1->saved_cx = cl2->saved_cx; + cl1->saved_cy = cl2->saved_cy; + cl1->saved_cw = cl2->saved_cw; + cl1->saved_ch = cl2->saved_ch; + cl1->was_on_canvas = cl2->was_on_canvas; + + cl2->saved_cx = tmp_cx; + cl2->saved_cy = tmp_cy; + cl2->saved_cw = tmp_cw; + cl2->saved_ch = tmp_ch; + cl2->was_on_canvas = tmp_was; + + selmon->sel = cl2; + c = cc; + focus(c); + + arrange(cl1->mon); + } +#endif } #endif break;