I'm submitting a new patch to be appreciated and included on suckless site if 
developers found this useful for users.
This patch differs from viewontag patch because instead of changing the 
original behavior of tagging a window, it creates a new function with modified 
behavior. The modified behavior consists of a shortcut to tag a window and 
focus on its new tag.
Thank you so much for all the amazing software of suckless. 

-- 
André Desgualdo Pereira
[email protected]
-- 
--- config.def.h	2023-01-21 07:22:27.659019476 -0300
+++ config_patched.h	2023-01-21 07:22:19.669437199 -0300
@@ -50,6 +50,7 @@ static const Layout layouts[] = {
 	{ MODKEY,                       KEY,      view,           {.ui = 1 << TAG} }, \
 	{ MODKEY|ControlMask,           KEY,      toggleview,     {.ui = 1 << TAG} }, \
 	{ MODKEY|ShiftMask,             KEY,      tag,            {.ui = 1 << TAG} }, \
+	{ Mod4Mask,                     KEY,      movewithtag,    {.ui = 1 << TAG} }, \ /* change the key to Mod1Mask if MODKEY is defined to Mod4Mask above */
 	{ MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 << TAG} },
 
 /* helper for spawning shell commands in the pre dwm-5.0 fashion */
--- dwm.c	2023-01-21 07:17:05.453254514 -0300
+++ dwm_patched.h	2023-01-21 07:24:10.998189290 -0300
@@ -208,6 +208,7 @@ static void showhide(Client *c);
 static void sigchld(int unused);
 static void spawn(const Arg *arg);
 static void tag(const Arg *arg);
+static void movewithtag(const Arg *arg);
 static void tagmon(const Arg *arg);
 static void tile(Monitor *m);
 static void togglebar(const Arg *arg);
@@ -1670,6 +1671,18 @@ tag(const Arg *arg)
 	}
 }
 
+void
+movewithtag(const Arg *arg)
+{
+	if (selmon->sel && arg->ui & TAGMASK) {
+		selmon->sel->tags = arg->ui & TAGMASK;
+		focus(NULL);
+		arrange(selmon);
+		if((arg->ui & TAGMASK) != TAGMASK)
+			view(arg);
+	}
+}
+
 void
 tagmon(const Arg *arg)
 {

Reply via email to