Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-namedscratchpads-6.2.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-namedscratchpads-6.2.diff (4568B)
---
1 diff '--color=auto' -up dwm-6.2/config.def.h dwm-6.2-new/config.def.h
2 --- dwm-6.2/config.def.h 2019-02-02 12:55:28.000000000 +0000
3 +++ dwm-6.2-new/config.def.h 2020-04-26 13:51:06.713332746 +0100
4 @@ -26,9 +26,10 @@ static const Rule rules[] = {
5 * WM_CLASS(STRING) = instance, class
6 * WM_NAME(STRING) = title
7 */
8 - /* class instance title tags mask isfloating …
9 - { "Gimp", NULL, NULL, 0, 1, …
10 - { "Firefox", NULL, NULL, 1 << 8, 0, …
11 + /* class instance title tags mask isfloating …
12 + { "Gimp", NULL, NULL, 0, 1, …
13 + { "firefox", NULL, NULL, 1 << 8, 0, …
14 + { NULL, NULL, "scratchpad", 0, 1, …
15 };
16
17 /* layout(s) */
18 @@ -59,10 +60,14 @@ static char dmenumon[2] = "0"; /* compon
19 static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", d…
20 static const char *termcmd[] = { "st", NULL };
21
22 +/*First arg only serves to match against key in rules*/
23 +static const char *scratchpadcmd[] = {"s", "st", "-t", "scratchpad", NU…
24 +
25 static Key keys[] = {
26 /* modifier key function argu…
27 { MODKEY, XK_p, spawn, {.v …
28 { MODKEY|ShiftMask, XK_Return, spawn, {.v …
29 + { MODKEY, XK_grave, togglescratch, {.v …
30 { MODKEY, XK_b, togglebar, {0} …
31 { MODKEY, XK_j, focusstack, {.i …
32 { MODKEY, XK_k, focusstack, {.i …
33 diff '--color=auto' -up dwm-6.2/dwm.c dwm-6.2-new/dwm.c
34 --- dwm-6.2/dwm.c 2019-02-02 12:55:28.000000000 +0000
35 +++ dwm-6.2-new/dwm.c 2020-04-26 13:55:56.820584361 +0100
36 @@ -93,6 +93,7 @@ struct Client {
37 int bw, oldbw;
38 unsigned int tags;
39 int isfixed, isfloating, isurgent, neverfocus, oldstate, isfull…
40 + char scratchkey;
41 Client *next;
42 Client *snext;
43 Monitor *mon;
44 @@ -139,6 +140,7 @@ typedef struct {
45 unsigned int tags;
46 int isfloating;
47 int monitor;
48 + const char scratchkey;
49 } Rule;
50
51 /* function declarations */
52 @@ -206,11 +208,13 @@ static void seturgent(Client *c, int urg
53 static void showhide(Client *c);
54 static void sigchld(int unused);
55 static void spawn(const Arg *arg);
56 +static void spawnscratch(const Arg *arg);
57 static void tag(const Arg *arg);
58 static void tagmon(const Arg *arg);
59 static void tile(Monitor *);
60 static void togglebar(const Arg *arg);
61 static void togglefloating(const Arg *arg);
62 +static void togglescratch(const Arg *arg);
63 static void toggletag(const Arg *arg);
64 static void toggleview(const Arg *arg);
65 static void unfocus(Client *c, int setfocus);
66 @@ -287,6 +291,7 @@ applyrules(Client *c)
67 /* rule matching */
68 c->isfloating = 0;
69 c->tags = 0;
70 + c->scratchkey = 0;
71 XGetClassHint(dpy, c->win, &ch);
72 class = ch.res_class ? ch.res_class : broken;
73 instance = ch.res_name ? ch.res_name : broken;
74 @@ -299,6 +304,7 @@ applyrules(Client *c)
75 {
76 c->isfloating = r->isfloating;
77 c->tags |= r->tags;
78 + c->scratchkey = r->scratchkey;
79 for (m = mons; m && m->num != r->monitor; m = m…
80 if (m)
81 c->mon = m;
82 @@ -308,6 +314,7 @@ applyrules(Client *c)
83 XFree(ch.res_class);
84 if (ch.res_name)
85 XFree(ch.res_name);
86 +
87 c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagse…
88 }
89
90 @@ -1652,6 +1659,19 @@ spawn(const Arg *arg)
91 }
92 }
93
94 +void spawnscratch(const Arg *arg)
95 +{
96 + if (fork() == 0) {
97 + if (dpy)
98 + close(ConnectionNumber(dpy));
99 + setsid();
100 + execvp(((char **)arg->v)[1], ((char **)arg->v)+1);
101 + fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[1]);
102 + perror(" failed");
103 + exit(EXIT_SUCCESS);
104 + }
105 +}
106 +
107 void
108 tag(const Arg *arg)
109 {
110 @@ -1720,6 +1740,28 @@ togglefloating(const Arg *arg)
111 }
112
113 void
114 +togglescratch(const Arg *arg)
115 +{
116 + Client *c;
117 + unsigned int found = 0;
118 +
119 + for (c = selmon->clients; c && !(found = c->scratchkey == ((cha…
120 + if (found) {
121 + c->tags = ISVISIBLE(c) ? 0 : selmon->tagset[selmon->sel…
122 + focus(NULL);
123 + arrange(selmon);
124 +
125 + if (ISVISIBLE(c)) {
126 + focus(c);
127 + restack(selmon);
128 + }
129 +
130 + } else{
131 + spawnscratch(arg);
132 + }
133 +}
134 +
135 +void
136 toggletag(const Arg *arg)
137 {
138 unsigned int newtags;
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.