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:
- 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 runctags *.{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
fromvim
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
, 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.