First of all, the use of an "optional string error" field in every returned structure (requiring all other fields to be marked optional!!!) is a telltale sign that the designer of this is an idiot, since anyone with a bit of sense and taste would use an exception mechanism in the RPC code instead and not destroy requiredness info in the messages.
Second, putting LightDM in the core protocol is similarly horrendous and weird.
Finally, this protocol has no way to resize windows, no input support, no nontrivial vsync handling, no DPI information, no subpixel layout/transform information, no apparent support for multi-GPU and multi-monitor, no window-in-window embedding support, and generally nothing beyond a basic skeleton.