aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Internal/Swallow.hs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/Internal/Swallow.hs b/src/Internal/Swallow.hs
new file mode 100644
index 0000000..3e4112f
--- /dev/null
+++ b/src/Internal/Swallow.hs
@@ -0,0 +1,29 @@
+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