| dwm-swapmonitors-20250509-4cd2832.diff - sites - public wiki contents of suckle… | |
| git clone git://git.suckless.org/sites | |
| Log | |
| Files | |
| Refs | |
| --- | |
| dwm-swapmonitors-20250509-4cd2832.diff (2172B) | |
| --- | |
| 1 From 4cd2832206eca48190463ac2d3e5ba4e1410c517 Mon Sep 17 00:00:00 2001 | |
| 2 From: jameel-sawafta <[email protected]> | |
| 3 Date: Fri, 9 May 2025 22:47:04 +0300 | |
| 4 Subject: [PATCH] dwm: add swapmon function to swap monitors | |
| 5 | |
| 6 --- | |
| 7 config.def.h | 1 + | |
| 8 dwm.c | 33 +++++++++++++++++++++++++++++++++ | |
| 9 2 files changed, 34 insertions(+) | |
| 10 | |
| 11 diff --git a/config.def.h b/config.def.h | |
| 12 index 9efa774..7c229cc 100644 | |
| 13 --- a/config.def.h | |
| 14 +++ b/config.def.h | |
| 15 @@ -85,6 +85,7 @@ static const Key keys[] = { | |
| 16 { MODKEY, XK_period, focusmon, {.i … | |
| 17 { MODKEY|ShiftMask, XK_comma, tagmon, {.i … | |
| 18 { MODKEY|ShiftMask, XK_period, tagmon, {.i … | |
| 19 + { MODKEY|ShiftMask, XK_apostrophe, swapmon, {0} … | |
| 20 TAGKEYS( XK_1, 0) | |
| 21 TAGKEYS( XK_2, 1) | |
| 22 TAGKEYS( XK_3, 2) | |
| 23 diff --git a/dwm.c b/dwm.c | |
| 24 index 1443802..adfe8bd 100644 | |
| 25 --- a/dwm.c | |
| 26 +++ b/dwm.c | |
| 27 @@ -232,6 +232,7 @@ static int xerror(Display *dpy, XErrorEvent *ee); | |
| 28 static int xerrordummy(Display *dpy, XErrorEvent *ee); | |
| 29 static int xerrorstart(Display *dpy, XErrorEvent *ee); | |
| 30 static void zoom(const Arg *arg); | |
| 31 +static void swapmon(const Arg *arg); | |
| 32 | |
| 33 /* variables */ | |
| 34 static const char broken[] = "broken"; | |
| 35 @@ -2139,6 +2140,38 @@ zoom(const Arg *arg) | |
| 36 pop(c); | |
| 37 } | |
| 38 | |
| 39 +void | |
| 40 +swapmon(const Arg *arg) | |
| 41 +{ | |
| 42 + if (mons->next == NULL) | |
| 43 + return; | |
| 44 + | |
| 45 + Monitor *m1 = mons; | |
| 46 + Monitor *m2 = mons->next; | |
| 47 + | |
| 48 + unsigned int tmp = m1->tagset[m1->seltags]; | |
| 49 + m1->tagset[m1->seltags] = m2->tagset[m2->seltags]; | |
| 50 + m2->tagset[m2->seltags] = tmp; | |
| 51 + | |
| 52 + Client *c; | |
| 53 + for (c = m1->clients; c; c = c->next) | |
| 54 + c->mon = m2; | |
| 55 + for (c = m2->clients; c; c = c->next) | |
| 56 + c->mon = m1; | |
| 57 + | |
| 58 + Client *tmp_clients = m1->clients; | |
| 59 + m1->clients = m2->clients; | |
| 60 + m2->clients = tmp_clients; | |
| 61 + | |
| 62 + Client *tmp_stack = m1->stack; | |
| 63 + m1->stack = m2->stack; | |
| 64 + m2->stack = tmp_stack; | |
| 65 + | |
| 66 + focus(NULL); | |
| 67 + arrange(m1); | |
| 68 + arrange(m2); | |
| 69 +} | |
| 70 + | |
| 71 int | |
| 72 main(int argc, char *argv[]) | |
| 73 { | |
| 74 -- | |
| 75 2.49.0 | |
| 76 |