dwm-swapwindows-20250509-00ea4c4.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-swapwindows-20250509-00ea4c4.diff (2285B)
       ---
            1 From 00ea4c4e2d221c7f2979bcf403e4c23abf4b3f79 Mon Sep 17 00:00:00 2001
            2 From: jameel-sawafta <jameelhsawafta@gmail.com>
            3 Date: Fri, 9 May 2025 22:51:56 +0300
            4 Subject: [PATCH] dwm: add swapwindow function to swap focused clients between
            5  monitors
            6 
            7 ---
            8  config.def.h |  1 +
            9  dwm.c        | 46 ++++++++++++++++++++++++++++++++++++++++++++++
           10  2 files changed, 47 insertions(+)
           11 
           12 diff --git a/config.def.h b/config.def.h
           13 index 9efa774..ec0a706 100644
           14 --- a/config.def.h
           15 +++ b/config.def.h
           16 @@ -85,6 +85,7 @@ static const Key keys[] = {
           17          { MODKEY,                       XK_period, focusmon,       {.i = +1 } },
           18          { MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
           19          { MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
           20 +        { MODKEY|ShiftMask,             XK_slash,  swapwindow,     {0} },
           21          TAGKEYS(                        XK_1,                      0)
           22          TAGKEYS(                        XK_2,                      1)
           23          TAGKEYS(                        XK_3,                      2)
           24 diff --git a/dwm.c b/dwm.c
           25 index 1443802..ee7658f 100644
           26 --- a/dwm.c
           27 +++ b/dwm.c
           28 @@ -232,6 +232,7 @@ static int xerror(Display *dpy, XErrorEvent *ee);
           29  static int xerrordummy(Display *dpy, XErrorEvent *ee);
           30  static int xerrorstart(Display *dpy, XErrorEvent *ee);
           31  static void zoom(const Arg *arg);
           32 +static void swapwindow(const Arg *arg);
           33  
           34  /* variables */
           35  static const char broken[] = "broken";
           36 @@ -2139,6 +2140,51 @@ zoom(const Arg *arg)
           37          pop(c);
           38  }
           39  
           40 +void
           41 +swapwindow(const Arg *arg)
           42 +{
           43 +    if (!selmon || !selmon->sel || !mons->next)
           44 +        return;
           45 +
           46 +    Monitor *m1 = selmon;
           47 +    Monitor *m2 = dirtomon(+1);
           48 +
           49 +    Client *c1 = m1->sel;
           50 +    Client *c2 = m2->sel;
           51 +
           52 +    if (!c2) {
           53 +        detach(c1);
           54 +        detachstack(c1);
           55 +        c1->mon = m2;
           56 +        attach(c1);
           57 +        attachstack(c1);
           58 +        focus(c1);
           59 +        selmon = m2;
           60 +        arrange(m1);
           61 +        arrange(m2);
           62 +        return;
           63 +    }
           64 +
           65 +    detach(c1);
           66 +    detachstack(c1);
           67 +    detach(c2);
           68 +    detachstack(c2);
           69 +
           70 +    c1->mon = m2;
           71 +    attach(c1);
           72 +    attachstack(c1);
           73 +    focus(c1);
           74 +
           75 +    c2->mon = m1;
           76 +    attach(c2);
           77 +    attachstack(c2);
           78 +    focus(c2);
           79 +
           80 +    selmon = m1;
           81 +    arrange(m1);
           82 +    arrange(m2);
           83 +}
           84 +
           85  int
           86  main(int argc, char *argv[])
           87  {
           88 -- 
           89 2.49.0
           90