module Internal.Swallow ( swallowHook, setSwallowEnabled, isSwallowEnabled, toggleSwallowEnabled) where import XMonad import Data.Monoid (All) import XMonad.Hooks.WindowSwallowing import XMonad.Util.ExtensibleState as XS data DisableSwallow = DisableSwallow Bool deriving (Show) swallowHook :: Event -> X All swallowHook = swallowEventHook (className =? "Alacritty") $ liftX $ do (DisableSwallow disable) <- XS.get return (not disable) isSwallowEnabled :: X Bool isSwallowEnabled = do (DisableSwallow b) <- XS.get return (not b) setSwallowEnabled :: Bool -> X () setSwallowEnabled enable = XS.modify $ const $ DisableSwallow $ not enable toggleSwallowEnabled :: X () toggleSwallowEnabled = (setSwallowEnabled . not) =<< isSwallowEnabled instance ExtensionClass DisableSwallow where initialValue = DisableSwallow False