summaryrefslogtreecommitdiffstats
path: root/tv/2configs/xserver/xmonad/Util/XUtils.hs
diff options
context:
space:
mode:
authorlassulus <lass@aidsballs.de>2015-10-25 21:27:14 +0100
committerlassulus <lass@aidsballs.de>2015-10-25 21:27:14 +0100
commitcc5220a4477e290f1833e609fed1e0f9f56e4a41 (patch)
treef7032b6126c6daac3e2d2e5ad9c5d628a7a3e34a /tv/2configs/xserver/xmonad/Util/XUtils.hs
parentace11d79badafce313b17c968701739513e95982 (diff)
parentcca25c7b66c44e0ec826d466bd48f2463df03fe9 (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.hs47
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