-
-
Notifications
You must be signed in to change notification settings - Fork 50
/
Copy pathExamplePaperColourColourExtension.hs
150 lines (138 loc) · 4.79 KB
/
ExamplePaperColourColourExtension.hs
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