Linux has too many window systems. Ten years ago, there was only X11*. Now, we have X11, Wayland*, Mir*, Android*, and several other one-off window systems. Supporting all these window systems is difficult because window system issues weave themselves throughout your driver in weird ways.