blob: 8a3b815b4046c3acfffd5b62a592e67e2219a41f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
{-# LANGUAGE TemplateHaskell #-}
module Pager.Types where
import Data.Aeson.TH (Options(fieldLabelModifier), deriveJSON, defaultOptions)
import Data.Text (Text)
data Geometry = Geometry
{ geometry_x :: Int
, geometry_y :: Int
, geometry_width :: Int
, geometry_height :: Int
}
data Window = Window
{ window_id :: Int
, window_title :: Text
, window_geometry :: Geometry
, window_focused :: Bool
, window_urgent :: Bool
}
data Workspace = Workspace
{ workspace_geometry :: Geometry
, workspace_focused :: Bool
, workspace_name :: Text
, workspace_windows :: [Window] -- sorted by z-order, earlier windows overlap later ones
}
$(deriveJSON defaultOptions { fieldLabelModifier = tail . dropWhile (/='_') } ''Geometry)
$(deriveJSON defaultOptions { fieldLabelModifier = tail . dropWhile (/='_') } ''Window)
$(deriveJSON defaultOptions { fieldLabelModifier = tail . dropWhile (/='_') } ''Workspace)
|