import Control.Exception (bracket) import Graphics.Vty main :: IO () main = bracket (mkVty mempty) shutdown $ \vty -> do a <- supportsBell (outputIface vty) update vty (picForImage (string defAttr $ show a)) loop vty loop :: Vty -> IO () loop vty = do ev <- nextEvent vty case ev of EvKey KEsc _ -> return () EvKey (KChar 'p') _ -> putStrLn "bad news" >> loop vty EvKey (KChar 'l') _ -> refresh vty >> loop vty EvKey (KChar 'b') _ -> ringTerminalBell (outputIface vty) >> loop vty _ -> loop vty