libnotify-0.1.0.0: example/endless.hs
#!/usr/bin/env runhaskell
-- | This little example program shows how to use libnotify action
-- callback together with glib MainLoop thing so they actually work
import Control.Applicative ((<$))
import Control.Concurrent (threadDelay)
import Libnotify
import System.Glib.MainLoop (MainLoop, mainLoopNew, mainLoopRun, mainLoopQuit)
main :: IO ()
main = () <$ do
l <- mainLoopNew Nothing False
display $
summary "Hello!"
<> body "Please, say \"blop\"!"
<> icon "face-embarrassed"
<> timeout Infinite
<> action "blob" "Say \"blop\"" blopCallback
<> action "flop" "Say \"flop\"" (flopCallback l)
mainLoopRun l
blopCallback :: Notification -> t -> IO Notification
blopCallback n _ = do
close n
putStrLn "Thanks!"
threadDelay second
display (reuse n <> summary "" <> body "Pretty please, say \"blop\"!")
flopCallback :: MainLoop -> Notification -> t -> IO ()
flopCallback l n _ = do
close n
putStrLn "Pfft.."
mainLoopQuit l
second :: Int
second = 1000000