module XMonad.Actions.NoBorders (
toggleBorder
) where
import XMonad
toggleBorder :: Window -> X ()
toggleBorder :: Window -> X ()
toggleBorder Window
w = do
Window
bw <- (XConf -> Window) -> X Window
forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a
asks (XConfig Layout -> Window
forall (l :: * -> *). XConfig l -> Window
borderWidth (XConfig Layout -> Window)
-> (XConf -> XConfig Layout) -> XConf -> Window
forall b c a. (b -> c) -> (a -> b) -> a -> c
. XConf -> XConfig Layout
config)
(Display -> X ()) -> X ()
forall a. (Display -> X a) -> X a
withDisplay ((Display -> X ()) -> X ()) -> (Display -> X ()) -> X ()
forall a b. (a -> b) -> a -> b
$ \Display
d -> IO () -> X ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
io (IO () -> X ()) -> IO () -> X ()
forall a b. (a -> b) -> a -> b
$ do
CInt
cw <- WindowAttributes -> CInt
wa_border_width (WindowAttributes -> CInt) -> IO WindowAttributes -> IO CInt
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
`fmap` Display -> Window -> IO WindowAttributes
getWindowAttributes Display
d Window
w
if CInt
cw CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
== CInt
0
then Display -> Window -> Window -> IO ()
setWindowBorderWidth Display
d Window
w Window
bw
else Display -> Window -> Window -> IO ()
setWindowBorderWidth Display
d Window
w Window
0