dwm-swapmonitors-20250509-4cd2832.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-swapmonitors-20250509-4cd2832.diff (2172B)
       ---
            1 From 4cd2832206eca48190463ac2d3e5ba4e1410c517 Mon Sep 17 00:00:00 2001
            2 From: jameel-sawafta <jameelhsawafta@gmail.com>
            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 = +1 } },
           17          { MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
           18          { MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
           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