154 lines
4.9 KiB
Haskell
154 lines
4.9 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
-- | This is my Termonad configuration.
|
|
-- Currently defaults to PaperColor
|
|
|
|
module Main where
|
|
|
|
import Data.Maybe (fromMaybe)
|
|
import Termonad
|
|
( CursorBlinkMode(CursorBlinkModeOn)
|
|
, Option(Set)
|
|
, ShowScrollbar(ShowScrollbarNever)
|
|
, TMConfig
|
|
, confirmExit
|
|
, cursorBlinkMode
|
|
, defaultConfigOptions
|
|
, defaultTMConfig
|
|
, options
|
|
, showMenu
|
|
, showScrollbar
|
|
, start
|
|
, FontConfig
|
|
, FontSize(FontSizePoints)
|
|
, defaultFontConfig
|
|
, fontConfig
|
|
, fontFamily
|
|
, fontSize
|
|
)
|
|
import Termonad.Config.Colour
|
|
( AlphaColour
|
|
, ColourConfig
|
|
, Palette(ExtendedPalette)
|
|
, addColourExtension
|
|
, createColour
|
|
, createColourExtension
|
|
, defaultColourConfig
|
|
, defaultStandardColours
|
|
, defaultLightColours
|
|
, backgroundColour
|
|
, foregroundColour
|
|
, palette
|
|
, List8
|
|
, mkList8
|
|
)
|
|
|
|
-- 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 = CursorBlinkModeOn
|
|
, fontConfig = fontConf
|
|
}
|
|
}
|
|
|
|
-- This is our PaperColor dark 'ColourConfig'. It holds all of our dark-related settings.
|
|
paperColorDark :: ColourConfig (AlphaColour Double)
|
|
paperColorDark =
|
|
defaultColourConfig
|
|
-- Set the default background & foreground colour of text of the terminal.
|
|
{ backgroundColour = Set (createColour 28 28 28) -- black.0
|
|
, foregroundColour = Set (createColour 208 208 208) -- white.7
|
|
-- Set the extended palette that has 2 Vecs of 8 PaperColor palette colours
|
|
, palette = ExtendedPalette paperColorNormal paperColorBright
|
|
}
|
|
where
|
|
paperColorNormal :: List8 (AlphaColour Double)
|
|
paperColorNormal = fromMaybe defaultStandardColours $ mkList8
|
|
[ createColour 28 28 28 -- black.0
|
|
, createColour 175 0 95 -- red.1
|
|
, createColour 95 175 0 -- green.2
|
|
, createColour 215 175 95 -- yellow.3
|
|
, createColour 95 175 215 -- blue.4
|
|
, createColour 128 128 128 -- purple.5
|
|
, createColour 215 135 95 -- aqua.6
|
|
, createColour 208 208 208 -- white.7
|
|
]
|
|
|
|
paperColorBright :: List8 (AlphaColour Double)
|
|
paperColorBright = fromMaybe defaultStandardColours $ mkList8
|
|
[ createColour 88 88 88 -- black.8
|
|
, createColour 95 175 95 -- red.9
|
|
, createColour 175 215 0 -- green.10
|
|
, createColour 175 135 215 -- yellow.11
|
|
, createColour 255 175 0 -- blue.12
|
|
, createColour 255 95 175 -- purple.13
|
|
, createColour 0 175 175 -- aqua.14
|
|
, createColour 95 135 135 -- white.15
|
|
]
|
|
|
|
-- This is our PaperColor light 'ColourConfig'. It holds all of our light-related settings
|
|
paperColorLight :: ColourConfig (AlphaColour Double)
|
|
paperColorLight =
|
|
defaultColourConfig
|
|
-- Set the default background & foreground colour of text of the terminal.
|
|
{ backgroundColour = Set (createColour 238 238 238) -- black.0
|
|
, foregroundColour = Set (createColour 68 68 68) -- white.7
|
|
-- Set the extended palette that has 2 Vecs of 8 PaperColor palette colours
|
|
, palette = ExtendedPalette paperColorNormal paperColorBright
|
|
}
|
|
where
|
|
paperColorNormal :: List8 (AlphaColour Double)
|
|
paperColorNormal = fromMaybe defaultLightColours $ mkList8
|
|
[ createColour 238 238 238 -- black.0
|
|
, createColour 175 0 0 -- red.1
|
|
, createColour 0 135 0 -- green.2
|
|
, createColour 95 135 0 -- yellow.3
|
|
, createColour 0 135 175 -- blue.4
|
|
, createColour 135 135 135 -- purple.5
|
|
, createColour 0 95 135 -- aqua.6
|
|
, createColour 68 68 68 -- white.7
|
|
]
|
|
|
|
paperColorBright :: List8 (AlphaColour Double)
|
|
paperColorBright = fromMaybe defaultLightColours $ mkList8
|
|
[ createColour 188 188 188 -- black.8
|
|
, createColour 215 0 0 -- red.9
|
|
, createColour 215 0 135 -- green.10
|
|
, createColour 135 0 175 -- yellow.11
|
|
, createColour 215 95 0 -- blue.12
|
|
, createColour 215 95 0 -- purple.13
|
|
, createColour 0 95 175 -- aqua.14
|
|
, createColour 0 95 135 -- white.15
|
|
]
|
|
|
|
|
|
-- This defines the font for the terminal.
|
|
fontConf :: FontConfig
|
|
fontConf =
|
|
defaultFontConfig
|
|
-- { fontFamily = "Droid Sans Mono Dotted for Powerline"
|
|
-- { fontFamily = "Inconsolata for Powerline"
|
|
{ fontFamily = "Inconsolata-g for Powerline"
|
|
, fontSize = FontSizePoints 6
|
|
}
|
|
|
|
main :: IO ()
|
|
main = do
|
|
-- First, create the colour extension based on either PaperColor modules.
|
|
--myColourExt <- createColourExtension paperColorDark
|
|
myColourExt <- createColourExtension paperColorLight
|
|
|
|
-- Update 'myTMConfig' with our colour extension.
|
|
let newTMConfig = addColourExtension myTMConfig myColourExt
|
|
|
|
-- Start Termonad with our updated 'TMConfig'.
|
|
start newTMConfig
|