module Graphics.X11.Extra where import Control.Exception (bracket) import System.Environment (getEnv) import System.IO.Unsafe (unsafePerformIO) import qualified Graphics.X11 as X11 unsafeInternAtom :: String -> Bool -> X11.Atom unsafeInternAtom atomName onlyIfExists = unsafePerformIO $ withDefaultDisplay $ \display -> X11.internAtom display atomName onlyIfExists defaultDisplayName :: String defaultDisplayName = unsafePerformIO (getEnv "DISPLAY") withDisplay :: String -> (X11.Display -> IO a) -> IO a withDisplay display = bracket (X11.openDisplay display) X11.closeDisplay withDefaultDisplay :: (X11.Display -> IO a) -> IO a withDefaultDisplay = withDisplay defaultDisplayName