Permalink
Fetching contributors…
Cannot retrieve contributors at this time
115 lines (103 sloc) 4.09 KB
-- | This is an example Termonad configuration that shows how to use the
-- Solarized colour scheme https://ethanschoonover.com/solarized/
module Main where
import Termonad
( CursorBlinkMode(CursorBlinkModeOff), Option(Set)
, ShowScrollbar(ShowScrollbarNever), TMConfig, confirmExit, cursorBlinkMode
, defaultConfigOptions, defaultTMConfig, options, showMenu, showScrollbar
, start
)
import Termonad.Config.Colour
( Colour, ColourConfig, Palette(ExtendedPalette), addColourExtension
, createColourExtension, cursorBgColour, defaultColourConfig, foregroundColour
, palette, sRGB24
)
import Termonad.Config.Vec (Vec((:*), EmptyVec), N8, unsafeFromListVec_)
import Data.Colour.SRGB (Colour, sRGB24)
-- This is our main 'TMConfig'. It holds all of the non-colour settings
-- for Termonad.
--
-- This shows how a few settings can be changed.
myTMConfig :: TMConfig
myTMConfig =
defaultTMConfig
{ options =
defaultConfigOptions
{ showScrollbar = ShowScrollbarNever
, confirmExit = False
, showMenu = False
, cursorBlinkMode = CursorBlinkModeOff
}
}
-- This is our Solarized dark 'ColourConfig'. It holds all of our dark-related settings.
solarizedDark :: ColourConfig (Colour Double)
solarizedDark =
defaultColourConfig
-- Set the default foreground colour of text of the terminal.
{ foregroundColour = sRGB24 131 148 150 -- base0
-- Set the extended palette that has 2 Vecs of 8 Solarized pallette colours
, palette = ExtendedPalette solarizedDark1 solarizedDark2
}
where
solarizedDark1 :: Vec N8 (Colour Double)
solarizedDark1 =
sRGB24 0 43 54 -- base03, background
:* sRGB24 220 50 47 -- red
:* sRGB24 133 153 0 -- green
:* sRGB24 181 137 0 -- yellow
:* sRGB24 38 139 210 -- blue
:* sRGB24 211 54 130 -- magenta
:* sRGB24 42 161 152 -- cyan
:* sRGB24 238 232 213 -- base2
:* EmptyVec
solarizedDark2 :: Vec N8 (Colour Double)
solarizedDark2 =
sRGB24 7 54 66 -- base02, background highlights
:* sRGB24 203 75 22 -- orange
:* sRGB24 88 110 117 -- base01, comments / secondary text
:* sRGB24 131 148 150 -- base0, body text / default code / primary content
:* sRGB24 147 161 161 -- base1, optional emphasised content
:* sRGB24 108 113 196 -- violet
:* sRGB24 101 123 131 -- base00
:* sRGB24 253 246 227 -- base3
:* EmptyVec
-- This is our Solarized light 'ColourConfig'. It holds all of our light-related settings.
solarizedLight :: ColourConfig (Colour Double)
solarizedLight =
defaultColourConfig
-- Set the default foreground colour of text of the terminal.
{ foregroundColour = sRGB24 101 123 131 -- base00
-- Set the extended palette that has 2 Vecs of 8 Solarized pallette colours
, palette = ExtendedPalette solarizedLight1 solarizedLight2
}
where
solarizedLight1 :: Vec N8 (Colour Double)
solarizedLight1 =
sRGB24 238 232 213 -- base2, background highlights
:* sRGB24 220 50 47 -- red
:* sRGB24 133 153 0 -- green
:* sRGB24 181 137 0 -- yellow
:* sRGB24 38 139 210 -- blue
:* sRGB24 211 54 130 -- magenta
:* sRGB24 42 161 152 -- cyan
:* sRGB24 7 54 66 -- base02
:* EmptyVec
solarizedLight2 :: Vec N8 (Colour Double)
solarizedLight2 =
sRGB24 253 246 227 -- base3, background
:* sRGB24 203 75 22 -- orange
:* sRGB24 147 161 161 -- base1, comments / secondary text
:* sRGB24 101 123 131 -- base00, body text / default code / primary content
:* sRGB24 88 110 117 -- base01, optional emphasised content
:* sRGB24 108 113 196 -- violet
:* sRGB24 131 148 150 -- base0
:* sRGB24 0 43 54 -- base03
:* EmptyVec
main :: IO ()
main = do
-- First, create the colour extension based on either Solarixed modules.
myColourExt <- createColourExtension solarizedDark
-- Update 'myTMConfig' with our colour extension.
let newTMConfig = addColourExtension myTMConfig myColourExt
-- Start Termonad with our updated 'TMConfig'.
start newTMConfig