Miniboxtk does not draw pixels directly but uses an abstract internal backend API to various backend implementations. Every backend implementation is optional. A backend implementation typically depends on an external library, either a "system library" like xlib for X11, or an abstraction layer library, like libsdl2 or glfw for accessing pixels and input.
At the moment miniboxtk supports the following backends:
Applications need to choose one or more backends. This matters when linking the executable and when initializing the backend. In extreme cases (like a 3d game), if the application needs to do complex drawings, it may want to bypass miniboxtk and draw directly on the backend provided canvas. Other than these cases, using the toolkit is the same regardless of the backend.
If env. var. MBTK_SW_RENDER exists, hardware accelerated rendering is disabled. This is useful for debugging and on systems with broken/buggy GPU or drivers.
If env. var. MBTK_X11_SYNC exists, all X calls are done in synchronous manner. This is useful only for debugging as it drasticly slows down the communication.