Proposal: Customize default client pointer for each client
My WM takes full advantage of MPX and basically have 2 users running in the same X session. However, must of the programs being run assume there is only a single master pair. I'm aware I could in theory explicitly set the client pointer for any of them, but I don't know how to handle clients that don't create a window (eg a screen locker that just grabs the keyboard) or clients that create a window after they start a grab. In practice, I think it would also be trouble some to track all such clients.
What I'm currently doing is spawning applications from my WM and when I spawn them, set an env var CLIENT_POINTER to indicate which master pair initiated its creation. Then I inject a customer script via LD_PRELOAD to override the X connection function, call the original and then explicitly set the client pointer. This works but is cumbersome. What I do like about this approach is that it handles tracking descendants automatically since children inherit from their parent by default.
I think a better approach would be remove the LD_PRELOAD and just have the X client libraries do this themselves. Of course nothing would need to be done in the specific env variable isn't present, so it shouldn't cause problems to existing users.