bspwm/CONTRIBUTING.md
Bastien Dejean 9a16477e02 Be neutral
2013-02-19 14:24:31 +01:00

1.9 KiB

Requirements

You must be comfortable with C, XCB and Git.

Coding Style

I follow the Linux Coding Style 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 clean && make debug && make install

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, 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.