#!/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