diff options
author | lassulus <lass@aidsballs.de> | 2015-10-25 21:27:14 +0100 |
---|---|---|
committer | lassulus <lass@aidsballs.de> | 2015-10-25 21:27:14 +0100 |
commit | cc5220a4477e290f1833e609fed1e0f9f56e4a41 (patch) | |
tree | f7032b6126c6daac3e2d2e5ad9c5d628a7a3e34a /tv/2configs/xserver/xmonad/Util/XUtils.hs | |
parent | ace11d79badafce313b17c968701739513e95982 (diff) | |
parent | cca25c7b66c44e0ec826d466bd48f2463df03fe9 (diff) |
Merge remote-tracking branch 'pnp/master'
Diffstat (limited to 'tv/2configs/xserver/xmonad/Util/XUtils.hs')
-rw-r--r-- | tv/2configs/xserver/xmonad/Util/XUtils.hs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tv/2configs/xserver/xmonad/Util/XUtils.hs b/tv/2configs/xserver/xmonad/Util/XUtils.hs new file mode 100644 index 000000000..de1d8247c --- /dev/null +++ b/tv/2configs/xserver/xmonad/Util/XUtils.hs @@ -0,0 +1,47 @@ +module Util.XUtils + ( shapeWindow + , withGC + , withPixmap + , withPixmapAndGC + ) where + +import Control.Exception ( bracket ) +import Foreign.C.Types ( CInt ) +import Graphics.X11.Xlib +import Graphics.X11.Xlib.Extras +import Graphics.X11.Xshape + + +shapeWindow :: Display -> Window -> (Pixmap -> GC -> IO ()) -> IO () +shapeWindow d w f = do + wa <- getWindowAttributes d w + + let width = fromIntegral $ wa_width wa + height = fromIntegral $ wa_height wa + + withPixmapAndGC d w width height 1 $ \ p g -> do + + setForeground d g 0 + fillRectangle d p g 0 0 width height + + setForeground d g 1 + + f p g + + xshapeCombineMask d w shapeBounding 0 0 p shapeSet + + +withGC :: Display -> Drawable -> (GC -> IO ()) -> IO () +withGC d p = + bracket (createGC d p) (freeGC d) + + +withPixmap :: Display -> Drawable -> Dimension -> Dimension -> CInt -> (Pixmap -> IO ()) -> IO () +withPixmap d p w h depth = + bracket (createPixmap d p w h depth) (freePixmap d) + + +withPixmapAndGC :: Display -> Drawable -> Dimension -> Dimension -> CInt -> (Pixmap -> GC -> IO ()) -> IO () +withPixmapAndGC d w width height depth f = + withPixmap d w width height depth $ \ p -> + withGC d p $ \ g -> f p g |