URI: 
       dwm-rotatetags-6.2.diff - sites - public wiki contents of suckless.org
  HTML git clone git://git.suckless.org/sites
   DIR Log
   DIR Files
   DIR Refs
       ---
       dwm-rotatetags-6.2.diff (2448B)
       ---
            1 From 7600ab7f23e732062ce5ff34a42ca0f1ce019702 Mon Sep 17 00:00:00 2001
            2 From: Sam <tritoke@protonmail.com>
            3 Date: Fri, 23 Jul 2021 18:38:03 +0100
            4 Subject: [PATCH] Created rotatetags function, and keybinds.
            5 
            6 - Added rotatetags function which rotates the tagset left / right the
            7 given number of tags, including wrapping round the ends if necessary.
            8 
            9 - Added keybinds for MOD + left and right arrows, moving the tagset left /
           10 right respectively.
           11 ---
           12  config.def.h |  2 ++
           13  dwm.c        | 28 ++++++++++++++++++++++++++++
           14  2 files changed, 30 insertions(+)
           15 
           16 diff --git a/config.def.h b/config.def.h
           17 index 1c0b587..2992431 100644
           18 --- a/config.def.h
           19 +++ b/config.def.h
           20 @@ -84,6 +84,8 @@ static Key keys[] = {
           21          { MODKEY,                       XK_period, focusmon,       {.i = +1 } },
           22          { MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
           23          { MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
           24 +        { MODKEY,                       XK_Left,   rotatetags,     {.i = -1 } },
           25 +        { MODKEY,                       XK_Right,  rotatetags,     {.i = +1 } },
           26          TAGKEYS(                        XK_1,                      0)
           27          TAGKEYS(                        XK_2,                      1)
           28          TAGKEYS(                        XK_3,                      2)
           29 diff --git a/dwm.c b/dwm.c
           30 index 4465af1..768166e 100644
           31 --- a/dwm.c
           32 +++ b/dwm.c
           33 @@ -192,6 +192,7 @@ static void resize(Client *c, int x, int y, int w, int h, int interact);
           34  static void resizeclient(Client *c, int x, int y, int w, int h);
           35  static void resizemouse(const Arg *arg);
           36  static void restack(Monitor *m);
           37 +static void rotatetags(const Arg *arg);
           38  static void run(void);
           39  static void scan(void);
           40  static int sendevent(Client *c, Atom proto);
           41 @@ -1369,6 +1370,33 @@ restack(Monitor *m)
           42          while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
           43  }
           44  
           45 +void
           46 +rotatetags(const Arg *arg)
           47 +{
           48 +        const int rot = abs(arg->i);
           49 +        const unsigned int tagset = selmon->tagset[selmon->seltags];
           50 +        unsigned int newtagset;
           51 +
           52 +        /* check the direction of the shift */
           53 +        if (arg->i < 0) {
           54 +                 /* shift tags right */
           55 +                 newtagset = (tagset >> rot) | (tagset << (LENGTH(tags) - rot));
           56 +        } else {
           57 +                 /* shift tags left */
           58 +                 newtagset = (tagset << rot) | (tagset >> (LENGTH(tags) - rot));
           59 +        }
           60 +
           61 +        /* mask the tag bits */
           62 +        newtagset &= TAGMASK;
           63 +
           64 +        if (newtagset) {
           65 +                 selmon->tagset[selmon->seltags] = newtagset;
           66 +                 focus(NULL);
           67 +                 arrange(selmon);
           68 +        }
           69 +}
           70 +
           71 +
           72  void
           73  run(void)
           74  {
           75 -- 
           76 2.32.0
           77