[dwm][patches][swapmonitors] Added patch - sites - public wiki contents of suck… | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
commit db9bcf402ef83cc1fffbc0ba1ceeb873048ef534 | |
parent 175ede80235ca9e7b81d90911e24b0a815bd976e | |
Author: jameel-sawafta <[email protected]> | |
Date: Sat, 10 May 2025 18:08:45 +0300 | |
[dwm][patches][swapmonitors] Added patch | |
Diffstat: | |
A dwm.suckless.org/patches/swapmonit… | 76 +++++++++++++++++++++++++++… | |
A dwm.suckless.org/patches/swapmonit… | 32 +++++++++++++++++++++++++++… | |
2 files changed, 108 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/dwm.suckless.org/patches/swapmonitors/dwm-swapmonitors-20250510-cf… | |
@@ -0,0 +1,76 @@ | |
+From 4cd2832206eca48190463ac2d3e5ba4e1410c517 Mon Sep 17 00:00:00 2001 | |
+From: jameel-sawafta <[email protected]> | |
+Date: Fri, 9 May 2025 22:47:04 +0300 | |
+Subject: [PATCH] dwm: add swapmon function to swap monitors | |
+ | |
+--- | |
+ config.def.h | 1 + | |
+ dwm.c | 33 +++++++++++++++++++++++++++++++++ | |
+ 2 files changed, 34 insertions(+) | |
+ | |
+diff --git a/config.def.h b/config.def.h | |
+index 9efa774..7c229cc 100644 | |
+--- a/config.def.h | |
++++ b/config.def.h | |
+@@ -85,6 +85,7 @@ static const Key keys[] = { | |
+ { MODKEY, XK_period, focusmon, {.i = +1 }… | |
+ { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 }… | |
+ { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 }… | |
++ { MODKEY|ShiftMask, XK_apostrophe, swapmon, {0} }, | |
+ TAGKEYS( XK_1, 0) | |
+ TAGKEYS( XK_2, 1) | |
+ TAGKEYS( XK_3, 2) | |
+diff --git a/dwm.c b/dwm.c | |
+index 1443802..adfe8bd 100644 | |
+--- a/dwm.c | |
++++ b/dwm.c | |
+@@ -232,6 +232,7 @@ static int xerror(Display *dpy, XErrorEvent *ee); | |
+ static int xerrordummy(Display *dpy, XErrorEvent *ee); | |
+ static int xerrorstart(Display *dpy, XErrorEvent *ee); | |
+ static void zoom(const Arg *arg); | |
++static void swapmon(const Arg *arg); | |
+ | |
+ /* variables */ | |
+ static const char broken[] = "broken"; | |
+@@ -2139,6 +2140,38 @@ zoom(const Arg *arg) | |
+ pop(c); | |
+ } | |
+ | |
++void | |
++swapmon(const Arg *arg) | |
++{ | |
++ if (mons->next == NULL) | |
++ return; | |
++ | |
++ Monitor *m1 = mons; | |
++ Monitor *m2 = mons->next; | |
++ | |
++ unsigned int tmp = m1->tagset[m1->seltags]; | |
++ m1->tagset[m1->seltags] = m2->tagset[m2->seltags]; | |
++ m2->tagset[m2->seltags] = tmp; | |
++ | |
++ Client *c; | |
++ for (c = m1->clients; c; c = c->next) | |
++ c->mon = m2; | |
++ for (c = m2->clients; c; c = c->next) | |
++ c->mon = m1; | |
++ | |
++ Client *tmp_clients = m1->clients; | |
++ m1->clients = m2->clients; | |
++ m2->clients = tmp_clients; | |
++ | |
++ Client *tmp_stack = m1->stack; | |
++ m1->stack = m2->stack; | |
++ m2->stack = tmp_stack; | |
++ | |
++ focus(NULL); | |
++ arrange(m1); | |
++ arrange(m2); | |
++} | |
++ | |
+ int | |
+ main(int argc, char *argv[]) | |
+ { | |
+-- | |
+2.49.0 | |
+ | |
diff --git a/dwm.suckless.org/patches/swapmonitors/index.md b/dwm.suckless.org/… | |
@@ -0,0 +1,32 @@ | |
+# monitors | |
+ | |
+## Description | |
+ | |
+This patch adds the ability to swap tagsets and clients between monitors in dw… | |
+It helps users who use multiple monitors to quickly rearrange workspaces by mo… | |
+all windows and tag assignments from one monitor to another. | |
+ | |
+## Usage | |
+ | |
+After applying the patch, the following key binding will be available by defau… | |
+ | |
+MODKEY + Shift + Apostrophe (') | |
+ | |
+This keybinding will: | |
+ | |
+- Swap the currently active monitor's tagset with the adjacent monitor's tagse… | |
+- Move all clients (windows) between the two monitors, effectively swapping th… | |
+ | |
+> You can modify the keybinding by editing the following line in `config.def.h… | |
+> | |
+> ```c | |
+> { MODKEY|ShiftMask, XK_apostrophe, swapmon, {0} }, | |
+> ``` | |
+ | |
+## Download | |
+ | |
+- [dwm-swapmonitors-20250510-cfb8627.diff](dwm-swapmonitors-20250510-cfb8627.d… | |
+ | |
+## Author | |
+ | |
+Jameel Sawafta <[email protected]> |