summaryrefslogtreecommitdiffstats
path: root/src/Pager/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Pager/Types.hs')
-rw-r--r--src/Pager/Types.hs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/Pager/Types.hs b/src/Pager/Types.hs
index 95dd837..2cec025 100644
--- a/src/Pager/Types.hs
+++ b/src/Pager/Types.hs
@@ -5,6 +5,24 @@ import Data.Aeson.TH (Options(fieldLabelModifier), deriveJSON, defaultOptions)
import Data.Text (Text)
+data Action
+ = None
+ -- | FocusWindow Int (Maybe Text)
+ | FocusWorkspace Text
+ -- | MoveWindowToWorkspace Int Text
+ -- | CopyWindowToWorkspace Int Text
+ | Batch Action Action
+
+instance Monoid Action where
+ mempty = None
+
+instance Semigroup Action where
+ x <> None = x
+ None <> x = x
+ Batch x1 x2 <> Batch x3 x4 = x1 <> x2 <> x3 <> x4
+ Batch x1 x2 <> x3 = x1 <> x2 <> x3
+ x1 <> x2 = Batch x1 x2
+
data Geometry = Geometry
{ geometry_x :: Int
, geometry_y :: Int
@@ -24,7 +42,7 @@ data Workspace = Workspace
{ workspace_geometry :: Geometry
, workspace_focused :: Bool
, workspace_name :: Text
- , workspace_windows :: [Window]
+ , workspace_windows :: [Window] -- sorted by z-order, earlier windows overlap later ones
}
$(deriveJSON defaultOptions { fieldLabelModifier = tail . dropWhile (/='_') } ''Geometry)