Add xdg_shell support.

It still misses a couple of things, but the main things are implemented