compositor: initial desktop-shell implementation