]> git.lizzy.rs Git - bspwm.git/blob - doc/CONTRIBUTING.md
Set the default value of border widths and window gaps via `config`
[bspwm.git] / doc / CONTRIBUTING.md
1 ## Requirements
2
3 You must be comfortable with [C][1], [XCB][2] and [Git][3].
4
5 ## Coding Style
6
7 I follow the [Linux Coding Style][4].
8
9 ## Browsing the Code
10
11 If you use `vim`:
12 - Hitting *K* will lead you to the manual page of the function under the cursor (works with most `xcb_*` functions), sometimes you'll have to explicitly specify the section of the manual you're interested in with *3K* (e.g.: `open`).
13 - Install `ctags` and run `ctags *.{c,h}` in the directory holding the source. Then, hitting *Ctrl-]* will lead you to the definition of the function/variable/structure under the cursor (to go back: *Ctrl-T*).
14 - You can run `make` from `vim` with `:make` and then navigate to the next and the previous error with `:cn` and `:cp`.
15
16 ## Debugging
17
18 To produce debug executables, issue:
19 ```
20 make debug
21 ```
22
23 If you use `systemd`, X might be started on the same virtual terminal as `bspwm` and you won't see its output, hence use something like `startx -- vt08` to start X (you can switch to the virtual terminal number *<n>* with *Ctrl-Alt-F<n>*).
24
25 The debug messages are generated by the `PRINTF` and `PUTS` macros: feel free to use them.
26
27 If you want to use [`gdb`][5], switch to a free virtual terminal and issue:
28
29 ```
30 gdb bspwm $(pgrep -x bspwm)
31 continue
32 ```
33
34 Then, go back to the virtual terminal holding X. If `bspwm` crashes, go back to the virtual terminal where you launched `gbd`: you might find clues there.
35
36 [1]: http://cm.bell-labs.com/cm/cs/cbook/
37 [2]: http://www.x.org/releases/X11R7.5/doc/libxcb/tutorial/
38 [3]: http://git-scm.com/documentation
39 [4]: http://www.kernel.org/doc/Documentation/CodingStyle
40 [5]: http://sourceware.org/gdb/current/onlinedocs/gdb/