Skip to main content

max / alloy

11.7 KB · 294 lines History Blame Raw
1 # Descended from Akari by Shu Kutsuzawa <cappyzawa@gmail.com>, MIT.
2 # https://github.com/cappyzawa/akari-theme
3 # The values below are makeover's own and no longer Akari's; the ancestry is.
4 # @{meta.name} — the warm ground of a lantern-lit alley, under a violet accent.
5 #
6 # Generated by skelgen from makeover's theme of the same name. Every tone
7 # below is derived; nothing here is a hex literal. Edit the theme, not this.
8
9 # UI elements
10 "ui.background" = { bg = "background" }
11 "ui.text" = "foreground"
12 "ui.text.focus" = { fg = "selection-fg", bg = "selection-bg" }
13 "ui.text.inactive" = { fg = "bright-black" }
14 "ui.text.info" = { fg = "info" }
15 "ui.text.directory" = { fg = "directory" }
16
17 "ui.cursor" = { fg = "cursor-text", bg = "cursor" }
18 "ui.cursor.normal" = { fg = "cursor-text", bg = "cursor" }
19 "ui.cursor.primary" = { fg = "cursor-text", bg = "cursor" }
20 "ui.cursor.primary.normal" = { fg = "cursor-text", bg = "cursor" }
21 "ui.cursor.match" = { fg = "accent", bg = "sunken", modifiers = ["bold"] }
22 "ui.cursor.insert" = { fg = "cursor-text", bg = "green" }
23 "ui.cursor.primary.insert" = { fg = "cursor-text", bg = "green" }
24 "ui.cursor.select" = { fg = "cursor-text", bg = "magenta" }
25 "ui.cursor.primary.select" = { fg = "cursor-text", bg = "magenta" }
26
27 "ui.selection" = { bg = "selection-bg" }
28 "ui.selection.primary" = { bg = "selection-bg" }
29
30 "ui.cursorline.primary" = { bg = "cursorline" }
31 "ui.cursorline.secondary" = { bg = "surface" }
32 "ui.cursorcolumn.primary" = { bg = "surface" }
33 "ui.cursorcolumn.secondary" = { bg = "surface" }
34
35 "ui.gutter" = { bg = "background" }
36 "ui.gutter.selected" = { bg = "cursorline" }
37 "ui.linenr" = { fg = "bright-black" }
38 "ui.linenr.selected" = { fg = "accent" }
39
40 "ui.statusline" = { fg = "foreground", bg = "surface" }
41 "ui.statusline.inactive" = { fg = "comment", bg = "surface" }
42 "ui.statusline.normal" = { fg = "background", bg = "green", modifiers = ["bold"] }
43 "ui.statusline.insert" = { fg = "background", bg = "accent", modifiers = ["bold"] }
44 "ui.statusline.select" = { fg = "background", bg = "magenta", modifiers = ["bold"] }
45 "ui.statusline.separator" = { fg = "bright-black", bg = "surface" }
46
47 "ui.popup" = { fg = "foreground", bg = "raised" }
48 "ui.popup.info" = { fg = "foreground", bg = "raised" }
49 "ui.window" = { fg = "border" }
50 "ui.background.separator" = { bg = "surface" }
51 "ui.help" = { fg = "foreground", bg = "raised" }
52
53 "ui.menu" = { fg = "foreground", bg = "raised" }
54 "ui.menu.selected" = { fg = "selection-fg", bg = "selection-bg" }
55 "ui.menu.scroll" = { fg = "bright-black", bg = "raised" }
56
57 "ui.virtual.ruler" = { bg = "surface" }
58 "ui.virtual.whitespace" = { fg = "bright-black" }
59 "ui.virtual.indent-guide" = { fg = "bright-black" }
60 "ui.virtual.inlay-hint" = { fg = "comment" }
61 "ui.virtual.inlay-hint.parameter" = { fg = "comment" }
62 "ui.virtual.inlay-hint.type" = { fg = "comment" }
63 "ui.virtual.wrap" = { fg = "bright-black" }
64 "ui.virtual.jump-label" = { fg = "bright-red", modifiers = ["bold"] }
65
66 "ui.debug.breakpoint" = { fg = "red" }
67 "ui.debug.active" = { fg = "accent", modifiers = ["bold"] }
68
69 "ui.highlight" = { bg = "match-bg" }
70 "ui.highlight.frameline" = { bg = "surface" }
71
72 "ui.bufferline" = { fg = "bright-black", bg = "surface" }
73 "ui.bufferline.active" = { fg = "foreground", bg = "background" }
74 "ui.bufferline.background" = { bg = "surface" }
75
76 "ui.picker.header" = { fg = "bright-blue", modifiers = ["bold"] }
77 "ui.picker.header.column" = { fg = "bright-blue", modifiers = ["bold"] }
78 "ui.picker.header.column.active" = { fg = "accent", modifiers = ["bold"] }
79
80 # Diagnostics
81 "error" = { fg = "red", modifiers = ["bold"] }
82 "warning" = { fg = "yellow" }
83 "info" = { fg = "blue" }
84 "hint" = { fg = "comment" }
85
86 "diagnostic.error" = { underline = { color = "red", style = "curl" } }
87 "diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
88 "diagnostic.info" = { underline = { color = "blue", style = "curl" } }
89 "diagnostic.hint" = { underline = { color = "comment", style = "curl" } }
90 "diagnostic.unnecessary" = { modifiers = ["dim"] }
91 "diagnostic.deprecated" = { modifiers = ["crossed_out"] }
92
93 "tabstop" = { underline = { color = "accent", style = "dashed" } }
94
95 # Diff
96 "diff.plus" = "green"
97 "diff.plus.gutter" = "green"
98 "diff.minus" = "red"
99 "diff.minus.gutter" = "red"
100 "diff.delta" = "amber"
101 "diff.delta.gutter" = "amber"
102 "diff.delta.moved" = "diff-moved"
103 "diff.delta.conflict" = { fg = "conflict", modifiers = ["bold"] }
104
105 # Markup
106 "markup.heading" = { fg = "accent", modifiers = ["bold"] }
107 "markup.heading.marker" = { fg = "comment" }
108 "markup.heading.1" = { fg = "accent", modifiers = ["bold"] }
109 "markup.heading.2" = { fg = "amber", modifiers = ["bold"] }
110 "markup.heading.3" = { fg = "ember", modifiers = ["bold"] }
111 "markup.heading.4" = { fg = "amber" }
112 "markup.heading.5" = { fg = "comment", modifiers = ["bold"] }
113 "markup.heading.6" = { fg = "blue" }
114 "markup.list" = { fg = "cyan" }
115 "markup.list.numbered" = { fg = "accent" }
116 "markup.list.unnumbered" = { fg = "cyan" }
117 "markup.list.checked" = { fg = "green" }
118 "markup.list.unchecked" = { fg = "comment" }
119 "markup.bold" = { modifiers = ["bold"] }
120 "markup.italic" = { modifiers = ["italic"] }
121 "markup.strikethrough" = { modifiers = ["crossed_out"] }
122 "markup.link.url" = { fg = "link", modifiers = ["underlined"] }
123 "markup.link.text" = { fg = "cyan" }
124 "markup.link.label" = { fg = "magenta" }
125 "markup.quote" = { fg = "comment", modifiers = ["dim"] }
126 "markup.raw" = { fg = "bright-green" }
127 "markup.raw.inline" = { fg = "bright-green" }
128 "markup.raw.block" = { fg = "bright-green" }
129 "markup.normal.completion" = "foreground"
130 "markup.normal.hover" = "foreground"
131 "markup.heading.completion" = { fg = "accent", modifiers = ["bold"] }
132 "markup.heading.hover" = { fg = "accent", modifiers = ["bold"] }
133 "markup.raw.inline.completion" = { fg = "bright-green" }
134 "markup.raw.inline.hover" = { fg = "bright-green" }
135
136 # Syntax highlighting
137 "attribute" = { fg = "amber" }
138 "type" = { fg = "amber" }
139 "type.builtin" = { fg = "yellow" }
140 "type.enum" = { fg = "amber" }
141 "type.enum.variant" = { fg = "amber" }
142 "type.parameter" = { fg = "yellow" }
143
144 "constructor" = { fg = "amber" }
145
146 "constant" = { fg = "constant" }
147 "constant.builtin" = { fg = "constant" }
148 "constant.builtin.boolean" = { fg = "constant" }
149 "constant.character" = { fg = "accent" }
150 "constant.character.escape" = { fg = "escape" }
151 "constant.numeric" = { fg = "constant" }
152 "constant.numeric.integer" = { fg = "constant" }
153 "constant.numeric.float" = { fg = "constant" }
154
155 "string" = { fg = "green" }
156 "string.regexp" = { fg = "regexp" }
157 "string.regexp.special" = { fg = "bright-magenta" }
158 "string.special" = { fg = "green" }
159 "string.special.path" = { fg = "path" }
160 "string.special.url" = { fg = "link", modifiers = ["underlined"] }
161 "string.special.symbol" = { fg = "bright-magenta" }
162
163 "comment" = { fg = "comment", modifiers = ["dim"] }
164 "comment.line" = { fg = "comment", modifiers = ["dim"] }
165 "comment.line.documentation" = { fg = "comment", modifiers = ["dim"] }
166 "comment.block" = { fg = "comment", modifiers = ["dim"] }
167 "comment.block.documentation" = { fg = "comment", modifiers = ["dim"] }
168 "comment.unused" = { fg = "comment", modifiers = ["dim"] }
169
170 "variable" = "foreground"
171 "variable.builtin" = { fg = "bright-red" }
172 "variable.parameter" = "foreground"
173 "variable.other" = "foreground"
174 "variable.other.member" = "member"
175 "variable.other.member.private" = "member"
176
177 "label" = { fg = "amber" }
178
179 "punctuation" = "foreground"
180 "punctuation.bracket" = "foreground"
181 "punctuation.delimiter" = "foreground"
182 "punctuation.special" = { fg = "amber" }
183
184 "keyword" = { fg = "accent" }
185 "keyword.control" = { fg = "accent" }
186 "keyword.control.conditional" = { fg = "accent" }
187 "keyword.control.repeat" = { fg = "accent" }
188 "keyword.control.import" = { fg = "accent" }
189 "keyword.control.return" = { fg = "accent" }
190 "keyword.control.exception" = { fg = "accent" }
191 "keyword.operator" = { fg = "accent" }
192 "keyword.directive" = { fg = "macro" }
193 "keyword.function" = { fg = "accent" }
194 "keyword.storage" = { fg = "accent" }
195 "keyword.storage.type" = { fg = "accent" }
196 "keyword.storage.modifier" = { fg = "accent" }
197
198 "operator" = "foreground"
199
200 "function" = { fg = "magenta" }
201 "function.builtin" = { fg = "bright-magenta" }
202 "function.method" = { fg = "magenta" }
203 "function.method.private" = { fg = "magenta" }
204 "function.macro" = { fg = "macro" }
205 "function.special" = { fg = "bright-magenta" }
206
207 "tag" = { fg = "accent" }
208 "tag.builtin" = { fg = "blue" }
209
210 "namespace" = { fg = "amber" }
211
212 "special" = { fg = "bright-yellow" }
213
214 "module" = { fg = "amber" }
215
216 # Palette definition (MUST be at the end of the file)
217 [palette]
218 # Surfaces and text, straight from the theme's intents.
219 background = "@{surface.page}"
220 foreground = "@{content.primary}"
221
222 cursor = "@{action.primary}"
223 cursor-text = "@{surface.page}"
224 # The selection is the page carrying a wash of the theme's warm tone, which is
225 # what makes a selected run read as lit rather than merely shaded. Warm on
226 # purpose, and not the accent: the caret is the accent, and a selection tinted
227 # the same hue as the thing sitting inside it hides the caret in its own wash.
228 selection-bg = "@{mix(surface.page, status.warning, 0.25)}"
229 selection-fg = "@{content.primary}"
230 # One step off the page: enough to find the caret's line, not enough to stripe
231 # the buffer.
232 cursorline = "@{mix(surface.page, surface.sunken, 0.4)}"
233
234 surface = "@{surface.sunken}"
235 raised = "@{mix(surface.page, surface.sunken, 0.5)}"
236 border = "@{line.border}"
237
238 # The eight normal ANSI slots, from skelgen's shared table — the same one the
239 # bare VT and the terminal emulator render from, so a color named `red` means
240 # one thing everywhere in the image.
241 black = "@{ansi.0}"
242 red = "@{ansi.1}"
243 green = "@{ansi.2}"
244 yellow = "@{ansi.3}"
245 blue = "@{ansi.4}"
246 magenta = "@{ansi.5}"
247 cyan = "@{ansi.6}"
248 white = "@{ansi.7}"
249
250 # The bright tier, and the one place this file departs from the shared table.
251 #
252 # A terminal's bright slots are lighter than their normal counterparts, which is
253 # the right move on a dark background and the wrong one on a light background:
254 # lighter means *less* contrast against the page, so "bright" syntax would come
255 # out fainter than plain syntax. What the tier actually wants is "further from
256 # the page", so each one is its normal slot pulled toward the text color.
257 #
258 # Written as a mix toward `content.primary` rather than as a lighten or a
259 # darken because that expression is correct on both polarities without being
260 # two expressions: on a light theme the text is dark and this darkens, on a
261 # dark theme the text is light and this lightens.
262 bright-black = "@{ansi.8}"
263 bright-red = "@{mix(ansi.1, content.primary, 0.35)}"
264 bright-green = "@{mix(ansi.2, content.primary, 0.35)}"
265 bright-yellow = "@{mix(ansi.3, content.primary, 0.35)}"
266 bright-blue = "@{mix(ansi.4, content.primary, 0.35)}"
267 bright-magenta = "@{mix(ansi.5, content.primary, 0.35)}"
268 bright-cyan = "@{mix(ansi.6, content.primary, 0.35)}"
269 bright-white = "@{mix(ansi.7, content.primary, 0.35)}"
270
271 # Named roles. These are what the highlight rules above actually reference; the
272 # ANSI names are here for the handful of rules that speak in them.
273 accent = "@{action.primary}"
274 ember = "@{mix(status.warning, status.danger, 0.5)}"
275 amber = "@{status.warning}"
276 constant = "@{category.six}"
277 # Comments want to recede, which is what `muted` is for. The hand-written
278 # pair reached for `secondary` and got away with it on the light theme, where
279 # secondary is a deep blue; on the dark theme the same intent is a near-white
280 # and comments came out as loud as code.
281 comment = "@{content.muted}"
282 path = "@{status.success}"
283 macro = "@{mix(category.five, content.primary, 0.35)}"
284 escape = "@{mix(category.five, content.primary, 0.35)}"
285 regexp = "@{mix(status.success, content.primary, 0.35)}"
286 link = "@{mix(status.info, content.primary, 0.35)}"
287 member = "@{status.info}"
288 directory = "@{category.six}"
289 sunken = "@{mix(surface.page, surface.sunken, 0.4)}"
290 match-bg = "@{mix(surface.raised, status.danger, 0.2)}"
291 info = "@{status.info}"
292 diff-moved = "@{status.info}"
293 conflict = "@{status.danger}"
294