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
|
name = "Darcula"
description = "After JetBrains' Darcula: warm orange keywords on charcoal. A dark theme."
# The colours come from JetBrains' own published files, not from a screenshot:
# the editor scheme in platform/platform-resources/src/DefaultColorSchemesManager.xml
# and the chrome from platform/platform-resources/src/themes/darcula.theme.json.
#
# It is "after Darcula" rather than Darcula, the way `cobalt` is after the
# Cobalt palette, because two values had to move for this project's readability
# rules. Both departures are marked below, and there are only two.
inherits = "turbo-dark"
[colors]
default = { fg = "#a9b7c6", bg = "#2b2b2b" }
desktop = { fg = "#3c3f41", bg = "#232527" }
shadow = { fg = "#1f2021", bg = "#232527" }
# #3c3f41 and #bbbbbb are the IDE's own window background and foreground, and
# #2f65ca its selection blue — all three straight out of darcula.theme.json.
"menu.bar" = { fg = "#bbbbbb", bg = "#3c3f41" }
"menu.item" = { fg = "#bbbbbb", bg = "#3c3f41" }
"menu.selected" = { fg = "#ffffff", bg = "#2f65ca" }
"menu.shortcut" = { fg = "#ffc66d", bg = "#3c3f41", bold = true }
"menu.disabled" = { fg = "#777777", bg = "#3c3f41" }
"window.frame.active" = { fg = "#bbbbbb", bg = "#2b2b2b" }
"window.frame.inactive" = { fg = "#5e6265", bg = "#2b2b2b" }
"window.title.active" = { fg = "#ffffff", bg = "#2b2b2b", bold = true }
"window.title.inactive" = { fg = "#808080", bg = "#2b2b2b" }
"window.body" = { fg = "#a9b7c6", bg = "#2b2b2b" }
statusbar = { fg = "#bbbbbb", bg = "#3c3f41" }
"statusbar.key" = { fg = "#ffc66d", bg = "#3c3f41", bold = true }
"statusbar.hint" = { fg = "#949494", bg = "#3c3f41" }
scrollbar = { fg = "#4d4d4d", bg = "#313335" }
"scrollbar.thumb" = { fg = "#a9b7c6", bg = "#313335" }
"dialog.frame" = { fg = "#bbbbbb", bg = "#3c3f41" }
"dialog.body" = { fg = "#bbbbbb", bg = "#3c3f41" }
"dialog.title" = { fg = "#ffffff", bg = "#3c3f41", bold = true }
"dialog.label" = { fg = "#bbbbbb", bg = "#3c3f41" }
button = { fg = "#bbbbbb", bg = "#4c5052" }
"button.focused" = { fg = "#ffffff", bg = "#2f65ca", bold = true }
"button.shortcut" = { fg = "#ffc66d", bg = "#4c5052", bold = true, underline = true }
input = { fg = "#bbbbbb", bg = "#45494a" }
"input.focused" = { fg = "#ffffff", bg = "#45494a" }
"input.selection" = { fg = "#ffffff", bg = "#2f65ca" }
list = { fg = "#bbbbbb", bg = "#3c3f41" }
"list.selected" = { fg = "#ffffff", bg = "#2f65ca" }
"list.unfocused" = { fg = "#bbbbbb", bg = "#0d293e" }
checkbox = { fg = "#bbbbbb", bg = "#3c3f41" }
"checkbox.focused" = { fg = "#ffffff", bg = "#2f65ca" }
"editor.text" = { fg = "#a9b7c6", bg = "#2b2b2b" }
"editor.selection" = { fg = "#a9b7c6", bg = "#214283" }
"editor.linenumber" = { fg = "#606366", bg = "#2b2b2b" }
# **Departure 1 of 2.** Darcula's own caret row is #323232, which is seven
# channel values from the #2b2b2b page — no highlight at all, and below the
# sixteen this project requires. This is the IDE's window background instead,
# #3c3f41, so the lift still comes out of JetBrains' palette: twenty-two away.
"editor.currentline" = { fg = "#a9b7c6", bg = "#3c3f41" }
"editor.cursor" = { fg = "#2b2b2b", bg = "#bbbbbb" }
"terminal.text" = { fg = "#bbbbbb", bg = "#2b2b2b" }
"terminal.cursor" = { fg = "#2b2b2b", bg = "#bbbbbb" }
"tree.text" = { fg = "#a9b7c6", bg = "#2b2b2b" }
"tree.directory" = { fg = "#ffc66d", bg = "#2b2b2b", bold = true }
"tree.selected" = { fg = "#ffffff", bg = "#2f65ca" }
"tree.unfocused" = { fg = "#a9b7c6", bg = "#0d293e" }
# Every one of these is a published DEFAULT_* attribute, mapped onto this
# project's seventeen classes:
#
# identifier DEFAULT_IDENTIFIER keyword DEFAULT_KEYWORD
# type DEFAULT_CLASS_REFERENCE builtin DEFAULT_INSTANCE_FIELD
# constant DEFAULT_CONSTANT function DEFAULT_FUNCTION_DECLARATION
# string DEFAULT_STRING number DEFAULT_NUMBER
# punctuation DEFAULT_COMMA / _SEMICOLON attribute XML_ATTRIBUTE_NAME
# tag XML_TAG_NAME link HYPERLINK_ATTRIBUTES
#
# Punctuation really is the keyword orange in Darcula — commas and semicolons
# are #cc7832 there, which is one of the things that makes it recognisable.
"syntax.identifier" = { fg = "#a9b7c6" }
"syntax.keyword" = { fg = "#cc7832" }
"syntax.type" = { fg = "#769aa5" }
"syntax.builtin" = { fg = "#9876aa" }
"syntax.constant" = { fg = "#9876aa", italic = true }
"syntax.function" = { fg = "#ffc66d" }
"syntax.string" = { fg = "#6a8759" }
"syntax.char" = { fg = "#6a8759" }
"syntax.number" = { fg = "#6897bb" }
# **Departure 2 of 2.** JetBrains draws comments in #808080, which is 3.59:1
# against this page — below the 4.5:1 this project holds prose to. #949494 is
# the smallest lift that clears it, at 4.67:1; #909090 comes to 4.44 and does
# not. Everything else on this page is JetBrains' value, unchanged.
"syntax.comment" = { fg = "#949494", italic = true }
"syntax.operator" = { fg = "#a9b7c6" }
"syntax.punctuation" = { fg = "#cc7832" }
"syntax.heading" = { fg = "#ffc66d", bold = true, underline = true }
"syntax.tag" = { fg = "#e8bf6a" }
"syntax.attribute" = { fg = "#bababa" }
"syntax.emphasis" = { fg = "#a9b7c6", bold = true }
"syntax.link" = { fg = "#287bde", underline = true }
"completion.frame" = { fg = "#bbbbbb", bg = "#3c3f41" }
"completion.item" = { fg = "#bbbbbb", bg = "#3c3f41" }
"completion.selected" = { fg = "#ffffff", bg = "#2f65ca", bold = true }
"completion.detail" = { fg = "#949494", bg = "#3c3f41" }
"diagnostic.error" = { fg = "#ff6b68", bold = true }
"diagnostic.warning" = { fg = "#bbb529", bold = true }
"diagnostic.info" = { fg = "#6897bb", italic = true }
|