From c31124dfaa8a337e9fe16c43666482da2ca69984 Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Thu, 6 Mar 2025 00:52:26 -0700 Subject: Implement basic screen corners. It would be really cool to integrate screen corners with the binding DSL, but that requires extra thought. --- src/Rahm/Desktop/Keys.hs | 10 +++++++++- src/Rahm/Desktop/Layout.hs | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'src/Rahm') diff --git a/src/Rahm/Desktop/Keys.hs b/src/Rahm/Desktop/Keys.hs index dc6628b..f4efbb3 100644 --- a/src/Rahm/Desktop/Keys.hs +++ b/src/Rahm/Desktop/Keys.hs @@ -140,6 +140,7 @@ import XMonad.Actions.RotSlaves rotAllUp, ) import XMonad.Hooks.ManageDocks (ToggleStruts (..)) +import XMonad.Hooks.ScreenCorners import XMonad.Layout.Spacing ( Border (..), SpacingModifier (..), @@ -1294,6 +1295,10 @@ bindings = do "Kills xmonad. Always binds to the 'Q' key." (io exitSuccess :: X ()) +cornersConfig :: Map ScreenCorner (X ()) +cornersConfig = + Map.fromList [(SCUpperLeft, displayDzenSelection)] + -- where -- -- permuteMods = map (foldl' (.|.) 0) . filterM (const [True, False]) @@ -1326,7 +1331,10 @@ applyKeys c = Map.insert (modMask c .|. shiftMask, xK_q) (spawnX "xmonad --recompile && xmonad --restart") - . keys conf' + . keys conf', + startupHook = do + startupHook c + forM_ (Map.toList cornersConfig) (uncurry addScreenCorner) } windowSpecificBindings :: diff --git a/src/Rahm/Desktop/Layout.hs b/src/Rahm/Desktop/Layout.hs index 12658a9..4d2b4ea 100644 --- a/src/Rahm/Desktop/Layout.hs +++ b/src/Rahm/Desktop/Layout.hs @@ -10,6 +10,7 @@ import Rahm.Desktop.Layout.ConsistentMosaic expandPositionAlt, shrinkPositionAlt, ) +import Rahm.Desktop.Layout.Explode (explodeable) import Rahm.Desktop.Layout.Flip (flippable) import Rahm.Desktop.Layout.Hole (hole) import Rahm.Desktop.Layout.List @@ -32,6 +33,7 @@ import XMonad fromMessage, ) import XMonad.Hooks.ManageDocks (avoidStruts) +import XMonad.Hooks.ScreenCorners (screenCornerLayoutHook) import XMonad.Layout.Fullscreen (fullscreenFull) import XMonad.Layout.LayoutModifier (ModifiedLayout (..)) import XMonad.Layout.MosaicAlt @@ -39,9 +41,9 @@ import XMonad.Layout.MosaicAlt ) import XMonad.Layout.Spacing (Border (..), spacingRaw) import XMonad.Layout.Spiral (spiral) -import Rahm.Desktop.Layout.Explode (explodeable) myLayout = + screenCornerLayoutHook $ fullscreenFull $ hole $ pinnable $ -- cgit