URI: 
       dwm-tagfun-6.4.diff - sites - public wiki contents of suckless.org
  HTML git clone git://git.suckless.org/sites
   DIR Log
   DIR Files
   DIR Refs
       ---
       dwm-tagfun-6.4.diff (1998B)
       ---
            1 diff --git a/config.def.h b/config.def.h
            2 index 061ad66..8edac81 100644
            3 --- a/config.def.h
            4 +++ b/config.def.h
            5 @@ -59,6 +59,14 @@ static const Layout layouts[] = {
            6  static const char *dmenucmd[] = { "dmenu_run", "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
            7  static const char *termcmd[]  = { "st", NULL };
            8  
            9 +static struct {
           10 +        void (*func)(const Arg *arg);
           11 +        const Arg arg;
           12 +} tagfun_cmds[LENGTH(tags)] = {
           13 +        [0] = { killclient, {0} },
           14 +        [1] = { spawn, { .v = termcmd } },
           15 +};
           16 +
           17  static const Key keys[] = {
           18          /* modifier                     key        function        argument */
           19          { MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
           20 @@ -108,6 +116,7 @@ static const Button buttons[] = {
           21          { ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
           22          { ClkClientWin,         MODKEY,         Button3,        resizemouse,    {0} },
           23          { ClkTagBar,            0,              Button1,        view,           {0} },
           24 +        { ClkTagBar,            0,              Button2,        tagfun,         {0} },
           25          { ClkTagBar,            0,              Button3,        toggleview,     {0} },
           26          { ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
           27          { ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
           28 diff --git a/dwm.c b/dwm.c
           29 index e5efb6a..79b76cb 100644
           30 --- a/dwm.c
           31 +++ b/dwm.c
           32 @@ -208,6 +208,7 @@ static void showhide(Client *c);
           33  static void sigchld(int unused);
           34  static void spawn(const Arg *arg);
           35  static void tag(const Arg *arg);
           36 +static void tagfun(const Arg *arg);
           37  static void tagmon(const Arg *arg);
           38  static void tile(Monitor *m);
           39  static void togglebar(const Arg *arg);
           40 @@ -1658,6 +1659,17 @@ tag(const Arg *arg)
           41          }
           42  }
           43  
           44 +void
           45 +tagfun(const Arg *arg)
           46 +{
           47 +        unsigned int i = arg->ui & TAGMASK, j = 0;
           48 +        if (i) {
           49 +                while ( i >>= 1) j++;
           50 +                if (tagfun_cmds[j].func)
           51 +                        tagfun_cmds[j].func(&tagfun_cmds[j].arg);
           52 +        }
           53 +}
           54 +
           55  void
           56  tagmon(const Arg *arg)
           57  {