From 419638a2730fbf1e2dc33b1119f8d1f30f112902 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Sun, 15 Nov 2020 16:11:33 +0100
Subject: Added switchtotag patch

---
 README     |  1 +
 README.org |  1 +
 config.h   | 14 +++++++-------
 dwm.c      | 11 +++++++++++
 4 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/README b/README
index 190e599..7bed1a2 100644
--- a/README
+++ b/README
@@ -66,6 +66,7 @@ List of patches in use:
  - pertag
  - restartsig
  - sizehints
+ - switchtotag
  - tagothermon
 
 My own autostart script can be found under my dotfiles-bsd repository:
diff --git a/README.org b/README.org
index 5c5b7dd..34c6a25 100644
--- a/README.org
+++ b/README.org
@@ -63,6 +63,7 @@ List of patches in use:
 - /pertag/
 - /restartsig/
 - /sizehints/
+- /switchtotag/
 - /tagothermon/
 
 My own autostart script can be found under my
diff --git a/config.h b/config.h
index 902ed01..9da1745 100644
--- a/config.h
+++ b/config.h
@@ -33,12 +33,13 @@ static const Rule rules[] = {
 	 *	WM_CLASS(STRING) = instance, class
 	 *	WM_NAME(STRING) = title
 	 */
-	/* class         instance  title             tags mask  isfloating isfreesize monitor */
-	{ "Firefox",     NULL,     NULL,             1 << 2,    0,         0,         -1 },
-	{ "st-256color", NULL,     NULL,             0,         0,         0,         -1 },
-	{ "mpv",         NULL,     NULL,             0,         0,         0,         -1 },
-	{ NULL,          NULL,     "DergodsRealmII", 0,         1,         0,         -1 },
-	{ NULL,          NULL,     "Event Tester",   0,         0,         0,         -1 }, /* xev */
+	/* class         instance  title             tags mask  switchtotag   isfloating isfreesize monitor */
+	{ "Firefox",     NULL,     NULL,             1 << 2,    1,            0,         0,         -1 },
+	{ "Gimp",        NULL,     NULL,             1 << 3,    1,            0,         0,         -1 },
+	{ "st-256color", NULL,     NULL,             0,         0,            0,         0,         -1 },
+	{ "mpv",         NULL,     NULL,             0,         0,            0,         0,         -1 },
+	{ NULL,          NULL,     "DergodsRealmII", 0,         0,            1,         0,         -1 },
+	{ NULL,          NULL,     "Event Tester",   0,         0,            0,         0,         -1 }, /* xev */
 };
 
 /* layout(s) */
@@ -98,7 +99,6 @@ static Key keys[] = {
 	{ MODKEY,                       XK_1,                     spawn,          {.v = vifmcmd } },
 	{ MODKEY,                       XK_2,                     spawn,          {.v = nvimcmd } },
 	{ MODKEY,                       XK_3,                     spawn,          {.v = ffcmd } },
-	TAGKEYS(                        XK_3,                                     2)
 	{ MODKEY,                       XK_4,                     spawn,          {.v = w3mcmd } },
 	{ MODKEY,                       XK_BackSpace,             spawn,          {.v = dmpccmd } },
 	{ 0,                            XF86XK_MonBrightnessUp,   spawn,          {.v = blinccmd } },
diff --git a/dwm.c b/dwm.c
index a875204..f11433d 100644
--- a/dwm.c
+++ b/dwm.c
@@ -93,6 +93,7 @@ struct Client {
 	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 	int bw, oldbw;
 	unsigned int tags;
+	unsigned int switchtotag;
 	int isfixed, isfloating, isfreesize, isurgent, neverfocus, oldstate, isfullscreen;
 	Client *next;
 	Client *snext;
@@ -140,6 +141,7 @@ typedef struct {
 	const char *instance;
 	const char *title;
 	unsigned int tags;
+	unsigned int switchtotag;
 	int isfloating;
 	int isfreesize;
 	int monitor;
@@ -353,6 +355,11 @@ applyrules(Client *c)
 			for (m = mons; m && m->num != r->monitor; m = m->next);
 			if (m)
 				c->mon = m;
+			if (r->switchtotag) {
+				Arg a = { .ui = r->tags };
+				c->switchtotag = selmon->tagset[selmon->seltags];
+				view(&a);
+			}
 		}
 	}
 	if (ch.res_class)
@@ -2103,6 +2110,10 @@ unmanage(Client *c, int destroyed)
 	focus(NULL);
 	updateclientlist();
 	arrange(m);
+	if (c->switchtotag) {
+		Arg a = { .ui = c->switchtotag };
+		view(&a);
+	}
 }
 
 void
-- 
cgit v1.2.3