Hacking Guide
- 1 Keep in touch
- 2 Required reading
- 3 Inner workings
- 3.1 Organization
- 4 Stuff to do
- 5 Working on Blackbox
- 6 Tips and tricks
- 2 Required reading
This page is meant as a guide for wannabe Blackbox hackers. Developers, don't discuss code here, we have lists for that. Rather remember how you were in the beginning and give beginners a hand.
1) Keep in touch
Remember, if you ever need help, see the MailingLists. One of them posts CVS commits, by the way. You can also browse the BlackboxCVS online if you want.
2) Required reading
Blackbox, starting with version 0.70, follows the NetWM specification. See StandardsCompliance for more info. It also helps if you are already familiar with the X libraries*.
Of course, actual C++ experience is quite useful. But some people managed to hack Blackbox without that much experience. Go figure.
3) Inner workings
Blackbox is written in C++. It may be useful to know that since 0.70 Blackbox implements code as a shared library, libbt, which is used by several external tools already.
3.1) Organization
C++ is an object-oriented language. Each .cc file more-or-less corresponds to one "thing" in the Blackbox GUI, and each "thing" is responsible for its own functionality. Here is a summary of the functionality provided in each of those files, so you know where to start looking to implement your hack.3.1.1) lib
- Application.cc
- ...
3.1.2) src
- BlackboxResource.cc:
- ...
4) Stuff to do
If you're looking for more specific tasks to tackle, have a look at the Blackbox TODO tracker*. Sometimes the developers post planned features there.
You can also browse the bug reports* and attempt to fix some of them.
5) Working on Blackbox
- DownloadBlackbox. As a hacker, it's recommended to always get the latest BlackboxCVS.
- Modify the source.
- Compile and install it (see BlackboxDocumentation/InstallingBlackbox).
- Try it and see what happened. Return to step 2 as needed.
- Submit your modifications to the patch tracker*.
6) Tips and tricks
A Blackbox copy under development is prone to crashes. So don't use it as the ~/.xinitrc anchor application. Use something else in its place, such as an xterm.