One more nit. It can be useful to have these functions like this `pub fn get_primary_monitor<T>(&self, f: |Option<&Monitor>| -> T) -> T`. If I was creating a window I could call `get_primary_monitor` and the closure could return a `Window` or nothing if they only wanted to query like you have shown.

Also we should probably create an example of a full screen app, but I don't think think that should block this PR.