From a95f379074d83b6519e9ffd2ec905a6c131969c9 Mon Sep 17 00:00:00 2001 From: David Roundy Date: Mon, 11 Jun 2007 17:36:50 +0200 Subject: add safeIO which catches and logs exceptions. darcs-hash:20070611153650-72aca-c802f2ac167c0e9232d17a2897163aca5a5479f0.gz --- XMonad.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/XMonad.hs b/XMonad.hs index e08956d..4309fe1 100644 --- a/XMonad.hs +++ b/XMonad.hs @@ -17,7 +17,7 @@ module XMonad ( X, WindowSet, WorkspaceId(..), ScreenId(..), XState(..), XConf(..), Layout(..), Typeable, Message, SomeMessage(..), fromMessage, - runX, io, withDisplay, withWindowSet, isRoot, spawn, restart, trace, whenJust, whenX, + runX, io, safeIO, withDisplay, withWindowSet, isRoot, spawn, restart, trace, whenJust, whenX, atom_WM_STATE, atom_WM_PROTOCOLS, atom_WM_DELETE_WINDOW ) where @@ -137,6 +137,9 @@ fromMessage (SomeMessage m) = cast m io :: IO a -> X a io = liftIO +safeIO :: IO () -> X () +safeIO f = liftIO (f `catch` \e -> do hPutStrLn stderr (show e); hFlush stderr) + -- | spawn. Launch an external application spawn :: String -> X () spawn x = io $ do -- cgit v1.2.3