about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--dwm.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/dwm.h b/dwm.h
index c67004a..ee7ced1 100644
--- a/dwm.h
+++ b/dwm.h
@@ -1,6 +1,46 @@
 /*
  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
  * See LICENSE file for license details.
+ *
+ * dynamic window manager is designed like any other X client as well. It is
+ * driven through handling X events. In contrast to other X clients, a window
+ * manager like dwm selects for SubstructureRedirectMask on the root window, to
+ * receive events about child window appearance and disappearance.  Only one X
+ * connection at a time is allowed to select for this event mask by any X
+ * server, thus only one window manager instance can be executed at a time.
+ * Any attempt to select for SubstructureRedirectMask by any connection after
+ * another connection already selected for those events, will result in an
+ * error generated by the server. Such errors are reported through calling the
+ * current X error handler.
+ *
+ * Calls to pop an X event from the event queue of the X connection are
+ * blocking.  Due the fact, that dwm reads status text from standard input, a
+ * select-driven main loop has been implemented which selects for reads on the
+ * X connection and STDIN_FILENO to handle all data smoothly and without
+ * busy-loop quirks..  The event handlers of dwm are organized in an array
+ * which is accessed whenever a new event has been popped. This allows event
+ * dispatching in O(1) time.
+ *
+ * Each child window of the root window is called a client in window manager
+ * terminology, except windows which have set the override_redirect flag.
+ * Clients are organized in a global doubly-linked client list, the focus
+ * history is remembered through a global stack list. Each client contains an
+ * array of Bools of the same size as the global tags array to indicate the
+ * tags of a client. There are no other data structures to organize the clients
+ * in tag lists, because a single global list is most simple. All clients which
+ * have at least one tag enabled of the current tags viewed, will be visible on
+ * the screen, all other clients are banned to the x-location 2 * screen width.
+ * This avoids having additional layers of workspace handling.
+ *
+ * For each client dwm creates a small title window which is resized whenever
+ * the WM_NAME or _NET_WM_NAME properties are updated.
+ *
+ * Keys and tagging rules are organized as arrays as well and defined in the
+ * config.h file. These arrays are kept static in event.o and tag.o
+ * respectively, because no other part of dwm needs access to them.
+ *
+ * The current mode is represented by the arrange function pointer which wether
+ * points to dofloat or dotile. 
  */
 
 #include "config.h"
=devel&id=83584bf88934c45ce10e770ee15d070a09f88f45'>^
c39e20297 ^
559a7615a ^
8b5aa221a ^
891f871ba ^
ddaedab83 ^
2781fea9e ^
ddaedab83 ^

2781fea9e ^
ddaedab83 ^


2781fea9e ^

ddaedab83 ^





4d4b3b1c0 ^
a9a5766c6 ^
765366c1f ^
66a7e3d37 ^
4d4b3b1c0 ^

55d8e71ab ^



ed9d0809a ^

ddaedab83 ^
c323ec015 ^
4d4b3b1c0 ^
a68a4bfaf ^
765366c1f ^
ddaedab83 ^
fb718f2d0 ^



eca05d2a3 ^
765366c1f ^

ff4a69b62 ^
eca05d2a3 ^
e0f57ee1a ^

ed9d0809a ^
e0f57ee1a ^
7ee6774fb ^
00f84d3d2 ^
d3f0f87e8 ^

c323ec015 ^
4d4b3b1c0 ^
e0f57ee1a ^
c323ec015 ^
4d4b3b1c0 ^
e0f57ee1a ^
d8430f5a7 ^
82a75635f ^
e0f57ee1a ^
c323ec015 ^
ddaedab83 ^
0f4567d59 ^
ff4a69b62 ^
a4f8a89c8 ^

6050102b7 ^
7d1a96151 ^
de69e1856 ^
ff4a69b62 ^
90119066a ^
e6ff6dd9c ^
7d1a96151 ^
379bdeca0 ^
55d8e71ab ^
f1d2ed757 ^
cd292568d ^
ddaedab83 ^
56f1f3d4b ^
07562d6b9 ^



55d8e71ab ^
c323ec015 ^
f670ba2ac ^
6b5e2adfd ^


f670ba2ac ^
4d4b3b1c0 ^
0f4567d59 ^
ddaedab83 ^
c323ec015 ^
4d4b3b1c0 ^


ddaedab83 ^
c323ec015 ^
ddaedab83 ^
7c08d14cf ^
ddaedab83 ^

55d8e71ab ^
bd54c4423 ^
c323ec015 ^
ddaedab83 ^


6901a725d ^
c323ec015 ^
6901a725d ^


2781fea9e ^
0f4567d59 ^
cb76f266f ^



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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140