diff options
| -rw-r--r-- | tv/5pkgs/haskell/xmonad-tv/src/XMonad/Extra.hs | 14 | ||||
| -rw-r--r-- | tv/5pkgs/haskell/xmonad-tv/src/main.hs | 7 | 
2 files changed, 18 insertions, 3 deletions
| diff --git a/tv/5pkgs/haskell/xmonad-tv/src/XMonad/Extra.hs b/tv/5pkgs/haskell/xmonad-tv/src/XMonad/Extra.hs new file mode 100644 index 000000000..74222712d --- /dev/null +++ b/tv/5pkgs/haskell/xmonad-tv/src/XMonad/Extra.hs @@ -0,0 +1,14 @@ +module XMonad.Extra where + +import XMonad +import qualified Data.Map as Map +import qualified XMonad.StackSet as W + + +isFloating :: Window -> WindowSet -> Bool +isFloating w = +    Map.member w . W.floating + +isFloatingX :: Window -> X Bool +isFloatingX w = +    isFloating w <$> gets windowset diff --git a/tv/5pkgs/haskell/xmonad-tv/src/main.hs b/tv/5pkgs/haskell/xmonad-tv/src/main.hs index 532f3ed16..48127a594 100644 --- a/tv/5pkgs/haskell/xmonad-tv/src/main.hs +++ b/tv/5pkgs/haskell/xmonad-tv/src/main.hs @@ -7,11 +7,12 @@ module Main (main) where  import System.Exit (exitFailure)  import Control.Exception -import Control.Monad.Extra (whenJustM) +import Control.Monad.Extra (ifM, whenJustM)  import qualified Data.List  import Graphics.X11.ExtraTypes.XF86  import Text.Read (readEither)  import XMonad +import XMonad.Extra (isFloatingX)  import System.IO (hPutStrLn, stderr)  import System.Environment (getArgs, getEnv, getEnvironment, lookupEnv)  import System.Posix.Process (executeFile) @@ -154,8 +155,8 @@ myKeys conf = Map.fromList $      , ((_S  , xK_Menu   ), gets windowset >>= allWorkspaceNames >>= pager pagerConfig (windows . W.shift) )      , ((_C  , xK_Menu   ), toggleWS) -    , ((_4  , xK_space  ), sendMessage NextLayout) -    , ((_4M , xK_space  ), resetLayout) +    , ((_4  , xK_space  ), withFocused $ \w -> ifM (isFloatingX w) xdeny $ sendMessage NextLayout) +    , ((_4M , xK_space  ), withFocused $ \w -> ifM (isFloatingX w) xdeny $ resetLayout)      , ((_4  , xK_m      ), windows W.focusMaster)      , ((_4  , xK_j      ), windows W.focusDown) | 
