multimon-3-added-reset_view-function.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
multimon-3-added-reset_view-function.diff (6816B)
---
1 From b9f79c3dd07b285e974b2dfdf2371a72467539bb Mon Sep 17 00:00:00 2001
2 From: "Gary B. Genett" <me@garybgenett.net>
3 Date: Mon, 24 Mar 2014 14:27:40 -0700
4 Subject: added reset_view function
5 MIME-Version: 1.0
6 Content-Type: multipart/mixed; boundary="------------1.8.3.2"
7
8 This is a multi-part message in MIME format.
9 --------------1.8.3.2
10 Content-Type: text/plain; charset=UTF-8; format=fixed
11 Content-Transfer-Encoding: 8bit
12
13 ---
14 config.def.h | 8 ++++++++
15 dwm.c | 21 +++++++++++++++++++++
16 2 files changed, 29 insertions(+)
17
18
19 --------------1.8.3.2
20 Content-Type: text/x-patch; name="0003-added-reset_view-function.patch"
21 Content-Transfer-Encoding: 8bit
22 Content-Disposition: attachment; filename="0003-added-reset_view-function.patch"
23
24 diff --git a/config.def.h b/config.def.h
25 index d3b6a4b7bbf244a9d824d99340e5fc6d9ecb8a56..92b1a461604c81c061f60780dc189a83dd697562 100644
26 --- a/config.def.h
27 +++ b/config.def.h
28 @@ -22,22 +22,28 @@ static const Rule rules[] = {
29 * WM_NAME(STRING) = title
30 */
31 /* class instance title tags mask isfloating monitor */
32 { "Gimp", NULL, NULL, 0, True, -1 },
33 { "Firefox", NULL, NULL, 1 << 8, False, -1 },
34 };
35
36 /* layout(s) */
37 static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
38 static const int nmaster = 1; /* number of clients in master area */
39 +static const int nviews = 1; /* number of tags highlighted by default */
40 static const Bool resizehints = True; /* True means respect size hints in tiled resizals */
41
42 +static const int master[1]; /* nmaster override per monitor */
43 +//static const int master[] = {1,-1}; /* monitor 0 = nmaster 1, monitor 1 = no nmaster (all vertical) */
44 +static const int views[1]; /* nviews override per monitor */
45 +//static const int views[] = {4,~0}; /* monitor 0 = nviews 4, monitor 1 = all (all highlighted) */
46 +
47 static const Layout layouts[] = {
48 /* symbol arrange function */
49 { "[]=", tile }, /* first entry is default */
50 { "><>", NULL }, /* no layout function means floating behavior */
51 { "[M]", monocle },
52 };
53
54 /* key definitions */
55 #define WINKEY Mod4Mask
56 #define MODKEY Mod1Mask
57 @@ -84,30 +90,32 @@ static Key keys[] = {
58 { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
59 TAGKEYS( XK_1, 0)
60 TAGKEYS( XK_2, 1)
61 TAGKEYS( XK_3, 2)
62 TAGKEYS( XK_4, 3)
63 TAGKEYS( XK_5, 4)
64 TAGKEYS( XK_6, 5)
65 TAGKEYS( XK_7, 6)
66 TAGKEYS( XK_8, 7)
67 TAGKEYS( XK_9, 8)
68 + { MODKEY, XK_grave, reset_view, {0} },
69 { MODKEY|ShiftMask, XK_q, quit, {0} },
70 };
71
72 /* button definitions */
73 /* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
74 static Button buttons[] = {
75 /* click event mask button function argument */
76 { ClkLtSymbol, 0, Button1, setlayout, {0} },
77 { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
78 { ClkMonNum, 0, Button1, focusmon, {.i = +1} },
79 + { ClkMonNum, 0, Button2, reset_view, {0} },
80 { ClkMonNum, 0, Button3, focusmon, {.i = -1} },
81 { ClkWinTitle, 0, Button2, zoom, {0} },
82 { ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
83 { ClkClientWin, MODKEY, Button1, movemouse, {0} },
84 { ClkClientWin, MODKEY, Button2, togglefloating, {0} },
85 { ClkClientWin, MODKEY, Button3, resizemouse, {0} },
86 { ClkTagBar, 0, Button1, view, {0} },
87 { ClkTagBar, 0, Button3, toggleview, {0} },
88 { ClkTagBar, MODKEY|WINKEY, Button1, nview, {0} },
89 { ClkTagBar, MODKEY|WINKEY, Button3, ntoggleview, {0} },
90 diff --git a/dwm.c b/dwm.c
91 index f6e9588d78a01e3263de54e94bd1559434a802c2..2b3bf5f99c95180cfb5a3bb04b4181481fbe7bbd 100644
92 --- a/dwm.c
93 +++ b/dwm.c
94 @@ -227,20 +227,21 @@ static void updatewindowtype(Client *c);
95 static void updatetitle(Client *c);
96 static void updatewmhints(Client *c);
97 static void nview(const Arg *arg);
98 static void view(const Arg *arg);
99 static Client *wintoclient(Window w);
100 static Monitor *wintomon(Window w);
101 static int xerror(Display *dpy, XErrorEvent *ee);
102 static int xerrordummy(Display *dpy, XErrorEvent *ee);
103 static int xerrorstart(Display *dpy, XErrorEvent *ee);
104 static void zoom(const Arg *arg);
105 +static void reset_view(const Arg *arg);
106
107 /* variables */
108 static const char broken[] = "broken";
109 static char stext[256];
110 static int screen;
111 static int sw, sh; /* X display screen geometry width, height */
112 static int bh, blw, bmw = 0; /* bar geometry */
113 static int (*xerrorxlib)(Display *, XErrorEvent *);
114 static unsigned int numlockmask = 0;
115 static void (*handler[LASTEvent]) (XEvent *) = {
116 @@ -2069,28 +2070,48 @@ zoom(const Arg *arg) {
117
118 if(!selmon->lt[selmon->sellt]->arrange
119 || (selmon->sel && selmon->sel->isfloating))
120 return;
121 if(c == nexttiled(selmon->clients))
122 if(!c || !(c = nexttiled(c->next)))
123 return;
124 pop(c);
125 }
126
127 +void
128 +reset_view(const Arg *arg) {
129 + const Arg n = {.i = +1};
130 + const Arg m = {.f = 1 + mfact};
131 + const int mon = selmon->num;
132 + Arg i = {.i = 0};
133 + Arg v = {.ui = 0};
134 + do {
135 + focusmon(&n);
136 + i.i = (master[selmon->num] ? master[selmon->num] : nmaster) - selmon->nmaster;
137 + incnmaster(&i);
138 + setmfact(&m);
139 + v.ui = (views[selmon->num] == ~0 ? ~0 : ((1 << (views[selmon->num] ? views[selmon->num] : nviews)) -1));
140 + view(&v);
141 + }
142 + while (selmon->num != mon);
143 +}
144 +
145 int
146 main(int argc, char *argv[]) {
147 if(argc == 2 && !strcmp("-v", argv[1]))
148 die("dwm-"VERSION", © 2006-2012 dwm engineers, see LICENSE for details\n");
149 else if(argc != 1)
150 die("usage: dwm [-v]\n");
151 if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())
152 fputs("warning: no locale support\n", stderr);
153 if(!(dpy = XOpenDisplay(NULL)))
154 die("dwm: cannot open display\n");
155 checkotherwm();
156 setup();
157 scan();
158 + const Arg r = {0};
159 + reset_view(&r);
160 run();
161 cleanup();
162 XCloseDisplay(dpy);
163 return EXIT_SUCCESS;
164 }
165
166 --------------1.8.3.2--
167
168