URI: 
       dwm-spawntag-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-spawntag-6.2.diff (2783B)
       ---
            1 From abace8a090f579a9bd2513e78e0ebe9d9fa1e0bb Mon Sep 17 00:00:00 2001
            2 From: Piyush Pangtey <gokuvsvegita@gmail.com>
            3 Date: Wed, 19 May 2021 19:27:34 +0530
            4 Subject: [PATCH] [Feature] spawntag
            5 
            6 spawn application whenever a tag is middle clicked
            7 ---
            8  config.def.h | 16 ++++++++++++++++
            9  dwm.c        | 14 ++++++++++++++
           10  2 files changed, 30 insertions(+)
           11 
           12 diff --git a/config.def.h b/config.def.h
           13 index 1c0b587..442b556 100644
           14 --- a/config.def.h
           15 +++ b/config.def.h
           16 @@ -54,11 +54,26 @@ static const Layout layouts[] = {
           17  /* helper for spawning shell commands in the pre dwm-5.0 fashion */
           18  #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
           19  
           20 +/* helper for launching gtk application */
           21 +#define GTKCMD(cmd) { .v = (const char*[]){ "/usr/bin/gtk-launch", cmd, NULL } }
           22 +
           23  /* commands */
           24  static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
           25  static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
           26  static const char *termcmd[]  = { "st", NULL };
           27  
           28 +static const Arg tagexec[] = {
           29 +        { .v = termcmd },
           30 +        { .v = termcmd },
           31 +        { .v = termcmd },
           32 +        { .v = termcmd },
           33 +        { .v = termcmd },
           34 +        { .v = termcmd },
           35 +        { .v = termcmd },
           36 +        { .v = termcmd },
           37 +        { .v = termcmd }
           38 +};
           39 +
           40  static Key keys[] = {
           41          /* modifier                     key        function        argument */
           42          { MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
           43 @@ -108,6 +123,7 @@ static Button buttons[] = {
           44          { ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
           45          { ClkClientWin,         MODKEY,         Button3,        resizemouse,    {0} },
           46          { ClkTagBar,            0,              Button1,        view,           {0} },
           47 +        { ClkTagBar,            0,              Button2,        spawntag,       {0} },
           48          { ClkTagBar,            0,              Button3,        toggleview,     {0} },
           49          { ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
           50          { ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
           51 diff --git a/dwm.c b/dwm.c
           52 index 4465af1..89b3220 100644
           53 --- a/dwm.c
           54 +++ b/dwm.c
           55 @@ -207,6 +207,7 @@ static void showhide(Client *c);
           56  static void sigchld(int unused);
           57  static void spawn(const Arg *arg);
           58  static void tag(const Arg *arg);
           59 +static void spawntag(const Arg *arg);
           60  static void tagmon(const Arg *arg);
           61  static void tile(Monitor *);
           62  static void togglebar(const Arg *arg);
           63 @@ -1662,6 +1663,19 @@ tag(const Arg *arg)
           64          }
           65  }
           66  
           67 +void
           68 +spawntag(const Arg *arg)
           69 +{
           70 +        if (arg->ui & TAGMASK) {
           71 +                for (int i = LENGTH(tags); i >= 0; i--) {
           72 +                        if (arg->ui & 1<<i) {
           73 +                                spawn(&tagexec[i]);
           74 +                                return;
           75 +                        }
           76 +                }
           77 +        }
           78 +}
           79 +
           80  void
           81  tagmon(const Arg *arg)
           82  {
           83 -- 
           84 2.31.1
           85