Introduction
Introduction Statistics Contact Development Disclaimer Help
[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]>
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.