From 579b787c66124c1bc67dfa7a4ad00f3a8e3611cb Mon Sep 17 00:00:00 2001 From: jao Date: Thu, 22 Sep 2022 22:05:33 +0100 Subject: import clean-ups --- src/Xmobar/X11/ColorCache.hs | 48 +++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 23 deletions(-) (limited to 'src/Xmobar/X11/ColorCache.hs') diff --git a/src/Xmobar/X11/ColorCache.hs b/src/Xmobar/X11/ColorCache.hs index b981775..a8a07cd 100644 --- a/src/Xmobar/X11/ColorCache.hs +++ b/src/Xmobar/X11/ColorCache.hs @@ -17,43 +17,45 @@ module Xmobar.X11.ColorCache(withColors) where -import Data.IORef -import System.IO.Unsafe (unsafePerformIO) -import Control.Monad.Trans (MonadIO, liftIO) -import Control.Exception (SomeException, handle) -import Graphics.X11.Xlib +import qualified Data.IORef as IO +import qualified System.IO.Unsafe as U -data DynPixel = DynPixel Bool Pixel +import qualified Control.Exception as E +import qualified Control.Monad.Trans as Tr -initColor :: Display -> String -> IO DynPixel -initColor dpy c = handle black $ initColor' dpy c +import qualified Graphics.X11.Xlib as X + +data DynPixel = DynPixel Bool X.Pixel + +initColor :: X.Display -> String -> IO DynPixel +initColor dpy c = E.handle black $ initColor' dpy c where - black :: SomeException -> IO DynPixel - black = const . return $ DynPixel False (blackPixel dpy $ defaultScreen dpy) + black :: E.SomeException -> IO DynPixel + black = const . return $ DynPixel False (X.blackPixel dpy $ X.defaultScreen dpy) -type ColorCache = [(String, Color)] +type ColorCache = [(String, X.Color)] {-# NOINLINE colorCache #-} -colorCache :: IORef ColorCache -colorCache = unsafePerformIO $ newIORef [] +colorCache :: IO.IORef ColorCache +colorCache = U.unsafePerformIO $ IO.newIORef [] -getCachedColor :: String -> IO (Maybe Color) -getCachedColor color_name = lookup color_name `fmap` readIORef colorCache +getCachedColor :: String -> IO (Maybe X.Color) +getCachedColor color_name = lookup color_name `fmap` IO.readIORef colorCache -putCachedColor :: String -> Color -> IO () -putCachedColor name c_id = modifyIORef colorCache $ \c -> (name, c_id) : c +putCachedColor :: String -> X.Color -> IO () +putCachedColor name c_id = IO.modifyIORef colorCache $ \c -> (name, c_id) : c -initColor' :: Display -> String -> IO DynPixel +initColor' :: X.Display -> String -> IO DynPixel initColor' dpy c = do - let colormap = defaultColormap dpy (defaultScreen dpy) + let colormap = X.defaultColormap dpy (X.defaultScreen dpy) cached_color <- getCachedColor c c' <- case cached_color of Just col -> return col - _ -> do (c'', _) <- allocNamedColor dpy colormap c + _ -> do (c'', _) <- X.allocNamedColor dpy colormap c putCachedColor c c'' return c'' - return $ DynPixel True (color_pixel c') + return $ DynPixel True (X.color_pixel c') -withColors :: MonadIO m => Display -> [String] -> ([Pixel] -> m a) -> m a +withColors :: Tr.MonadIO m => X.Display -> [String] -> ([X.Pixel] -> m a) -> m a withColors d cs f = do - ps <- mapM (liftIO . initColor d) cs + ps <- mapM (Tr.liftIO . initColor d) cs f $ map (\(DynPixel _ pixel) -> pixel) ps -- cgit v1.2.3