you dont' need docbook-to-man to build svn now, unless you change the manpage
[mikachu/openbox.git] / HACKING
1 Woop, a HACKING document for openbox at last!
2
3 dirs:
4         kernel - core of the WM
5         render - librender, rendering routines for the WM and for apps
6         parser - libparser, for parsing config files
7
8 Beware the Client.transient_for. It can be set to a !NULL value of TRAN_GROUP,
9 which is not a valid pointer. You must ALWAYS check for TRAN_GROUP before
10 following transient_for. When TRAN_GROUP is found, Client.group will always
11 be !NULL. Some smart action should be taken using all members of the group in
12 this case.
13     Smart action idea:
14         Skip over members of the group that are also transients of the group
15         (have Client.transient_for set to TRAN_GROUP). These windows are not
16         ancestors and using them will also end up causing infinite loops!
17
18 When using coordinates/sizes of windows, make sure you use the right area. The
19 Client.area rect is the reference point and size of the *CLIENT* window. This
20 value is not what you see in any shape or form, and gravity is applied to it to
21 translate it into what you see. The Client.frame.area is the actual position
22 and size of the entire frame. This is usually the value you want to use, unless
23 you are in client.c (probably) and adjusting/using the position or size from
24 the client's perspective.
25
26 Indentation
27 -----------
28 For openbox, we aim to have consistent coding style. Some, but surely
29 not all, guidelines:
30  * use 4 space indents
31  * tabs should not appear in source files
32  * functions should have the opening and closing braces on their own
33    lines
34  * most other constructs should have braces on the same line as the
35    statement
36  * when in doubt look at the rest of the source
37  * vim users can use "set expandtab tabstop=4 shiftwidth=4
38    softtabstop=4" for some of this
39
40