1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
{-# LANGUAGE OverloadedStrings #-}
-- | This is an example Termonad configuration that shows how to use the
-- PaperColor colour scheme https://github.com/NLKNguyen/papercolor-theme
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 = "Monospace"
, fontSize = FontSizePoints 12
}
main :: IO ()
main = do
-- First, create the colour extension based on either PaperColor modules.
myColourExt <- createColourExtension paperColorLight
-- Update 'myTMConfig' with our colour extension.
let newTMConfig = addColourExtension myTMConfig myColourExt
-- Start Termonad with our updated 'TMConfig'.
start newTMConfig
|