That's why I split it. The window system interface is pretty much done. The main module won't change by much.
95% of the work is done in the core module. The main module is merely for the executable and rarely changes.
I've split it up because the xlib (and future wayland) modules need to refer to the core as a library, so the main module has nothing to do there.
Though I admit that part of the reason is earlier attempts with dynamic libraries, but that was more hassle than it needed to be.
I could merge the core back into the main module, but I'll wait a bit until I do that, just to be sure.