blob: 95dd8378442e3945f48abf605db5f80964e5b2be (
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]
}
$(deriveJSON defaultOptions { fieldLabelModifier = tail . dropWhile (/='_') } ''Geometry)
$(deriveJSON defaultOptions { fieldLabelModifier = tail . dropWhile (/='_') } ''Window)
$(deriveJSON defaultOptions { fieldLabelModifier = tail . dropWhile (/='_') } ''Workspace)
|