module System.Terminal.Core
(
Colour (..), set_colours, set_title
)
where
import System.Console.ANSI as RAW
data Colour =
DBlack | DBlue | DGreen | DCyan | DRed | DMagenta | DYellow | DWhite |
LBlack | LBlue | LGreen | LCyan | LRed | LMagenta | LYellow | LWhite
deriving Enum
decodeC :: Colour -> RAW.Color
decodeC c =
[
RAW.Black,
RAW.Blue,
RAW.Green,
RAW.Cyan,
RAW.Red,
RAW.Magenta,
RAW.Yellow,
RAW.White
]
!! (fromEnum c `mod` 8)
decodeI :: Colour -> RAW.ColorIntensity
decodeI c = if fromEnum c <= 7 then RAW.Dull else RAW.Vivid
set_colours :: Colour -> Colour -> IO ()
set_colours f b = RAW.setSGR
[
RAW.SetColor RAW.Foreground (decodeI f) (decodeC f),
RAW.SetColor RAW.Background (decodeI b) (decodeC b)
]
set_title :: String -> IO ()
set_title = RAW.setTitle