about summary refs log tree commit diff stats
path: root/patches/7-focusurgent-20160831-56a31dc.diff
blob: 23a0858f3cf2973656c2e8703b8b7d1af06b2bc4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
From e9c46c8624e3de1fba021c30bbc42707ef51353c Mon Sep 17 00:00:00 2001
From: Acid Bong <acid-bong@cock.lt>
Date: Wed, 19 Oct 2022 13:23:34 +0300
Subject: [PATCH] patch: focusurgent

---
 config.def.h  |  3 +++
 focusurgent.c | 14 ++++++++++++++
 2 files changed, 17 insertions(+)
 create mode 100644 focusurgent.c

diff --git a/config.def.h b/config.def.h
index b8f0908..1de3c06 100644
--- a/config.def.h
+++ b/config.def.h
@@ -59,6 +59,7 @@ static const char *termcmd[]  = { "st", NULL };
 
 #include <X11/XF86keysym.h>
 #include "movestack.c"
+#include "focusurgent.c"
 static const Key keys[] = {
 	/* modifier                     key        function        argument */
 	{ MODKEY,                       XK_space,      spawn,          {.v = dmenucmd } },
@@ -124,6 +125,8 @@ static const Key keys[] = {
 	{ MODKEY|ShiftMask,		XK_k,		movestack,	{.i = -1 } },
 	{ MODKEY|ShiftMask,		XK_Down,	movestack,	{.i = +1 } }, /* arrow keys */
 	{ MODKEY|ShiftMask,		XK_Up,		movestack,	{.i = -1 } },
+		/* focusurgent patch */
+	{ MODKEY,			XK_a,		focusurgent,	{0} },
 };
 
 /* button definitions */
diff --git a/focusurgent.c b/focusurgent.c
new file mode 100644
index 0000000..bc6eee6
--- /dev/null
+++ b/focusurgent.c
@@ -0,0 +1,14 @@
+static void
+focusurgent(const Arg *arg) {
+	Client *c;
+	int i;
+	for(c=selmon->clients; c && !c->isurgent; c=c->next);
+	if(c) {
+		for(i=0; i < LENGTH(tags) && !((1 << i) & c->tags); i++);
+		if(i < LENGTH(tags)) {
+			const Arg a = {.ui = 1 << i};
+			view(&a);
+			focus(c);
+		}
+	}
+}
-- 
2.38.0