summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Roundy <droundy@darcs.net>2007-06-11 17:36:50 +0200
committerDavid Roundy <droundy@darcs.net>2007-06-11 17:36:50 +0200
commitb3344699b75ac9b268a176b552c9b158804adc33 (patch)
tree973c94513ea7b5506ad43cfc2d5e182f59c960ca
parentaadaee9f01ca8d5382bfb1fdd31cc99a1c1dbefe (diff)
downloadmetatile-b3344699b75ac9b268a176b552c9b158804adc33.tar
metatile-b3344699b75ac9b268a176b552c9b158804adc33.zip
add safeIO which catches and logs exceptions.
darcs-hash:20070611153650-72aca-c802f2ac167c0e9232d17a2897163aca5a5479f0
-rw-r--r--XMonad.hs5
1 files changed, 4 insertions, 1 deletions
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