{-# LANGUAGE TemplateHaskell #-} module Termonad.Config where import Termonad.Prelude import Control.Lens (makeLensesFor) import Data.Colour (Colour) import Data.Colour.Names -- (grey) data FontConfig = FontConfig { fontFamily :: !Text , fontSize :: !Int } deriving (Eq, Show) $(makeLensesFor [ ("fontFamily", "lensFontFamily") , ("fontSize", "lensFontSize") ] ''FontConfig ) defaultFontConfig :: FontConfig defaultFontConfig = FontConfig { fontFamily = "Monospace" -- or "DejaVu Sans Mono" or "Bitstream Vera Sans Mono Roman" or "Source Code Pro" , 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 }