41 lines
2.3 KiB
Markdown
41 lines
2.3 KiB
Markdown
Resources used in the production of this program:
|
|
|
|
- [The XCB Reference from FreeDesktop](https://xcb.freedesktop.org/manual/index.html)
|
|
- [The Xorg Basic Programming with the XCB
|
|
Library](https://www.x.org/releases/X11R7.6/doc/libxcb/tutorial/index.html),
|
|
- [The KDE Source Code for
|
|
XCBWrapper](https://github.com/KDE/libkscreen/tree/master/backends),
|
|
- [xedgewarp](https://github.com/Airblader/xedgewarp)
|
|
[Vlad Zahorodnii](https://github.com/zzag) et. al., ongoing.
|
|
- [C++ in a
|
|
Nutshell](https://www.oreilly.com/library/view/c-in-a/059600298X/)
|
|
Ray Lischner, O'Reilly Publishing, 2003
|
|
|
|
The sheer variety of sources I needed to cobble together an
|
|
understanding how the XCB library works is an example of what teachers
|
|
call [extrinsic
|
|
load](https://betterhumans.pub/skyrocket-your-learning-top-3-studying-techniques-based-on-cognitive-load-theory-1641b5e56508),
|
|
an unnecessary extra load on learning because the documentation is
|
|
poorly organized and lacks instruction. *Basic Programming with XCB*
|
|
is a
|
|
*[tutorial](https://www.writethedocs.org/videos/eu/2017/the-four-kinds-of-documentation-and-why-you-need-to-understand-what-they-are-daniele-procida/)*
|
|
oriented toward commonplace tasks, but peters out before getting to an
|
|
XCB extensions such as RandR. The reference is a *reference*; it
|
|
doesn't help you understand how to use the library. `XCBWrapper` is
|
|
an excellent example of how to use XCB, but it uses some fairly
|
|
high-level C++ to accomplish all that it does, and untangling the
|
|
relationship between the wrapper template, the macro that does wrapper
|
|
declarations, and the XCB Reference; once you find the insight that
|
|
XCB's declarations are all derived from a massive XML file, you can
|
|
start to understand that XCBWrapper exploits the patterns produced by
|
|
the derivative file, but it requires insight and effort that's
|
|
unrelated to understanding XCB in the first place.
|
|
|
|
This project does show the usual trajectory of one of my learning
|
|
exercises, especially since I'm fond of delving in places where no man
|
|
has documented before. I've dumped a ton of stuff into my brain and
|
|
now it's all starting to make sense. I also note that I'm doing
|
|
_better_ than a lot of the open-source examples, in that I'm batching
|
|
many of my requests before processing them. I'm not batching storing
|
|
the replies yet, but I don't see why that couldn't happen.
|