import Wayland import Waylean.Registry open Wayland Protocols Waylean structure State where registry : Registry.State := .new def zoomRegistry {α : Type} : DisplayM Registry.State α → DisplayM State α := DisplayM.zoom (mk_lens registry) def launch : DisplayM State Unit := do _ ← DisplayM.registerSignal .SIGINT do DisplayM.liftIO (IO.println "Received SIGINT") DisplayM.requestQuit zoomRegistry Registry.init DisplayM.sync do let shm : WlShm ← zoomRegistry Registry.bindSingleton shm.release def main : IO Unit := DisplayM.run launch { }