import Wayland open Wayland.Native partial def mainLoop (loop : EventLoop (IO Unit)) : IO Unit := do match (← loop.poll) with | .none => return | .some msg => msg; mainLoop loop partial def main : IO Unit := do let disp : Display ← Display.new .none let loop : EventLoop (IO Unit) ← EventLoop.new _ ← loop.addDisplay disp _ ← loop.addSignal SIGINT (do IO.println "Received SIGINT" loop.quit) let rec setUpTimer := loop.addTimer 500 (do IO.println "Timer tick" _ ← setUpTimer) _ ← setUpTimer disp.roundtrip mainLoop loop