1.8 KiB
Requirements
You must be comfortable with C, XCB and Git.
Coding Style
I follow the Linux Coding Style with the following exceptions:
- tab = 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 runctags *.{c,h}
in the directory holdingbspwm
's 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
fromvim
with:make
and then navigate to the next and the previous error with:cn
and:cp
.
Debugging
To get a debug executable use make debug
instead of 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 with Ctrl-Alt-F).
The debug messages are generated by the PRINTF
and PUTS
macros.
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.