aboutsummaryrefslogtreecommitdiff
path: root/src/Rahm/Desktop/Layout/ConsistentMosaic.hs
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2022-11-21 12:05:03 -0700
committerJosh Rahm <rahm@google.com>2022-11-21 12:05:03 -0700
commitee9be16599f20aef6d1d3fd15666c00452f85aba (patch)
tree1aed66c1de2ce201463e3becc2d452d4a8aa2992 /src/Rahm/Desktop/Layout/ConsistentMosaic.hs
parenta1636c65e05d02f7d4fc408137e1d37b412ce890 (diff)
downloadrde-ee9be16599f20aef6d1d3fd15666c00452f85aba.tar.gz
rde-ee9be16599f20aef6d1d3fd15666c00452f85aba.tar.bz2
rde-ee9be16599f20aef6d1d3fd15666c00452f85aba.zip
Format with ormolu.
Diffstat (limited to 'src/Rahm/Desktop/Layout/ConsistentMosaic.hs')
-rw-r--r--src/Rahm/Desktop/Layout/ConsistentMosaic.hs28
1 files changed, 9 insertions, 19 deletions
diff --git a/src/Rahm/Desktop/Layout/ConsistentMosaic.hs b/src/Rahm/Desktop/Layout/ConsistentMosaic.hs
index 3dbc44c..0d95c8f 100644
--- a/src/Rahm/Desktop/Layout/ConsistentMosaic.hs
+++ b/src/Rahm/Desktop/Layout/ConsistentMosaic.hs
@@ -1,27 +1,23 @@
-
-- This module provides a wrapper around the Mosaic layout to create a more
-- consistent experience where instead of the windows being the ones it works
-- on, it instead works on the window places so things like window swapping
-- still work as expected.
module Rahm.Desktop.Layout.ConsistentMosaic where
-import XMonad
-import qualified Rahm.Desktop.StackSet as W
-import qualified Data.Map as Map
import Data.Map (Map)
+import qualified Data.Map as Map
import Data.Maybe (mapMaybe)
-
-import XMonad.Layout.MosaicAlt
-
import Rahm.Desktop.Logger
-
+import qualified Rahm.Desktop.StackSet as W
+import XMonad
+import XMonad.Layout.MosaicAlt
newtype MosaicWrap l a = MosaicWrap (l a) deriving (Read, Show)
doAlt :: (Window -> HandleWindowAlt) -> X HandleWindowAlt
doAlt f = do
- (W.StackSet (W.Screen (W.Workspace _ _ mStack) _ _) _ _ _)
- <- windowset <$> get
+ (W.StackSet (W.Screen (W.Workspace _ _ mStack) _ _) _ _ _) <-
+ windowset <$> get
return $
case mStack of
@@ -34,11 +30,9 @@ expandPositionAlt = doAlt expandWindowAlt
shrinkPositionAlt :: X HandleWindowAlt
shrinkPositionAlt = doAlt shrinkWindowAlt
-
instance (LayoutClass l a, Show a, Ord a, Enum a, Num a) => LayoutClass (MosaicWrap l) a where
-
runLayout (W.Workspace t (MosaicWrap l) (id -> Just s)) rect = do
- let zs = zipStack [100..] s
+ let zs = zipStack [100 ..] s
s' = fmap fst zs
m = Map.fromList (W.integrate zs)
@@ -48,18 +42,14 @@ instance (LayoutClass l a, Show a, Ord a, Enum a, Num a) => LayoutClass (MosaicW
(,rect) <$> Map.lookup place m
return (rects', MosaicWrap <$> maybeNewLayout)
-
where
zipStack as (W.Stack b c d) =
- let (cz, bz : dz) = splitAt (length c) as in
- W.Stack (bz, b) (zip (reverse cz) c) (zip dz d)
-
-
+ let (cz, bz : dz) = splitAt (length c) as
+ in W.Stack (bz, b) (zip (reverse cz) c) (zip dz d)
runLayout (W.Workspace t (MosaicWrap l) a) rect = do
(rects, maybeNewLayout) <- runLayout (W.Workspace t l a) rect
return (rects, MosaicWrap <$> maybeNewLayout)
-
-- By default just pass the message to the underlying layout.
handleMessage (MosaicWrap l) mess = do
maybeNewLayout <- handleMessage l mess