{-# LANGUAGE TemplateHaskell #-}
module Termonad.Config where
import Termonad.Prelude
import Control.Lens (makeLensesFor)
import Data.Colour (Colour)
import Data.Colour.Names
data FontConfig = FontConfig
{ fontFamily :: !Text
, fontSize :: !Int
} deriving (Eq, Show)
$(makeLensesFor
[ ("fontFamily", "lensFontFamily")
, ("fontSize", "lensFontSize")
]
''FontConfig
)
defaultFontConfig :: FontConfig
defaultFontConfig =
FontConfig
{ fontFamily = "Monospace"
, fontSize = 12
}
data ShowScrollbar
= ShowScrollbarNever
| ShowScrollbarAlways
| ShowScrollbarIfNeeded
deriving (Eq, Show)
data TMConfig = TMConfig
{ fontConfig :: !FontConfig
, showScrollbar :: !ShowScrollbar
, cursorColor :: !(Colour Double)
, scrollbackLen :: !Integer
} deriving (Eq, Show)
$(makeLensesFor
[ ("fontConfig", "lensFontConfig")
, ("showScrollbar", "lensShowScrollbar")
, ("cursorColor", "lensCursorColor")
, ("scrollbackLen", "lensScrollbackLen")
]
''TMConfig
)
defaultTMConfig :: TMConfig
defaultTMConfig =
TMConfig
{ fontConfig = defaultFontConfig
, showScrollbar = ShowScrollbarIfNeeded
, cursorColor = lightgrey
, scrollbackLen = 10000
}