"with-sync" macro adds a wl_display.sync message to the queue and waits for the promise to be delivered
listen and handle-message return the updated state of the channel, so
no need any longer for (:globals state) to be an atom
remove useless mapcat in registry-bind
handle drm :device and :format events