bspwm/doc/CONTRIBUTING.md
2013-06-27 15:23:39 +02:00

44 lines
1.8 KiB
Markdown

## Requirements
You must be comfortable with [C][1], [XCB][2] and [Git][3].
## Coding Style
I follow the [Linux Coding Style][4] with the following exceptions:
- One *Tab* equals 4 spaces.
- Always use `typedef ...` for structures.
## Browsing the Code
The first files you might want to look at are `types.h`, `bspwm.c` and `events.c`.
If you use `vim`:
- 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`).
- 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*).
- You can run `make` from `vim` with `:make` and then navigate to the next and the previous error with `:cn` and `:cp`.
## Debugging
To produce debug executables, issue:
```
make debug
```
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-Fn*).
The debug messages are generated by the `PRINTF` and `PUTS` macros: feel free to use them.
If you want to use [`gdb`][5], switch to a free virtual terminal, e.g. *Ctrl-Alt-F2* and issue:
```
gdb bspwm $(pgrep -x bspwm)
continue
```
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.
[1]: http://cm.bell-labs.com/cm/cs/cbook/
[2]: http://www.x.org/releases/X11R7.5/doc/libxcb/tutorial/
[3]: http://git-scm.com/documentation
[4]: http://www.kernel.org/doc/Documentation/CodingStyle
[5]: http://sourceware.org/gdb/current/onlinedocs/gdb/