Unnamed repository; edit this file 'description' to name the repository.
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# wolf-alabaster-light.toml
#
# Author: Wolf <[email protected]>
# Project: https://github.com/wolf/alabaster-for-helix
# Download: https://raw.githubusercontent.com/wolf/alabaster-for-helix/main/helix/dot-config/helix/themes/wolf-alabaster-light.toml
#
# This is a light-background theme especically for the Helix editor.
#
# The most important part here is the syntax stuff, but the theme includes UI stuff specifically for Helix, as well.
#
# What I care about is:
#   * Readable syntax, no matter the language
#   * The error messages provided by the LSP
#   * Anything special needed to make the UI non-surprising
#   * Building a minimal definition
#
# I started from a couple important sources:
#   * The [priorities and ideas](https://tonsky.me/blog/syntax-highlighting/) behind the Alabaster Theme (which exists for many editors) by Nikita Prokopov
#   * His [actual repo implementing the theme](https://github.com/tonsky/sublime-scheme-alabaster)
#   * A [theme template](https://github.com/joegm/helix-theme-template) on GitHub provided by joegm

# I don't consider this to be done! I absolutely want feedback. I absolutely will continue to tinker.

# GENERAL - Diagnostics (LSP errors/warnings)
warning = { fg = "highlight" }
error = { fg = "error-red", modifiers = ["bold"] }
info = { fg = "definition" }
hint = { fg = "punctuation" }
diagnostic = { underline = { style = "curl" } }

# UI - Interface elements
"ui.background" = { bg = "bg" }
"ui.text" = { fg = "fg" }
"ui.text.focus" = { fg = "active", modifiers = ["bold"] }

"ui.cursor" = { bg = "active", fg = "bg" }
"ui.cursor.primary" = { bg = "active", fg = "bg" }
"ui.cursor.match" = { bg = "highlight" }
"ui.cursorline" = { bg = "cursorline" }
"ui.cursorcolumn" = { bg = "cursorline" }

"ui.gutter" = { bg = "bg" }

"ui.selection" = { bg = "selection" }
"ui.selection.primary" = { bg = "selection-primary" }

"ui.linenr" = { fg = "punctuation" }
"ui.linenr.selected" = { fg = "active", modifiers = ["bold"] }

"ui.statusline" = { fg = "fg", bg = "panel" }
"ui.statusline.inactive" = { fg = "punctuation", bg = "panel" }

# Bufferline - make active buffer clearly visible (like onelight-fixed-bufferline)
"ui.bufferline.active" = { fg = "fg", bg = "bg", modifiers = ["bold"] }
"ui.bufferline.background" = { bg = "bg" }
"ui.bufferline" = { fg = "punctuation", bg = "panel" }

"ui.menu" = { fg = "fg", bg = "panel" }
"ui.menu.selected" = { fg = "bg", bg = "active" }

"ui.popup" = { fg = "fg", bg = "panel" }
"ui.popup.info" = { fg = "fg", bg = "panel" }
"ui.window" = { fg = "punctuation" }
"ui.help" = { fg = "fg", bg = "bg" }

# Jump labels - extremely visible
"ui.virtual.jump-label" = { fg = "jump-label", modifiers = ["bold"] }

# Virtual text (inlay hints, etc.) - dimmed type color
"ui.virtual" = { fg = "inlay-hint" }
"ui.virtual.inlay-hint" = { fg = "inlay-hint" }
"ui.virtual.ruler" = { bg = "cursorline" }

# LSP diagnostic inline/expanded text
"diagnostic.error" = { underline = { color = "error-red", style = "curl" } }
"diagnostic.warning" = { underline = { color = "highlight", style = "curl" } }
"diagnostic.info" = { underline = { color = "definition", style = "curl" } }
"diagnostic.hint" = { underline = { color = "punctuation", style = "curl" } }
"diagnostic.deprecated" = { fg = "punctuation", modifiers = ["crossed_out"] }

# SYNTAX HIGHLIGHTING - Following Alabaster's minimal approach
# Only 4 categories get color: strings, constants, comments, definitions
# Everything else (keywords, variables, calls) stays default fg

"string" = { fg = "string" }
"string.regexp" = { fg = "string" }
"string.special" = { fg = "string" }

"constant" = { fg = "constant" }
"constant.numeric" = { fg = "constant" }
"constant.character" = { fg = "constant" }
"constant.builtin" = { fg = "constant" }

"comment" = { fg = "comment" }
"comment.line" = { fg = "comment" }
"comment.block" = { fg = "comment" }

"function" = { fg = "definition" }
"function.builtin" = { fg = "definition" }
"function.method" = { fg = "definition" }

"constructor" = { fg = "definition" }
"type" = { fg = "definition" }
"type.builtin" = { fg = "definition" }

# These are NOT highlighted (Alabaster philosophy: keywords are obvious)
"keyword" = { fg = "fg" }
"keyword.control" = { fg = "fg" }
"keyword.operator" = { fg = "fg" }
"variable" = { fg = "fg" }
"variable.parameter" = { fg = "fg" }
"variable.builtin" = { fg = "fg" }

# Punctuation is dimmed
"punctuation" = { fg = "punctuation" }
"punctuation.bracket" = { fg = "punctuation" }
"punctuation.delimiter" = { fg = "punctuation" }

"operator" = { fg = "punctuation" }

# Special cases
"tag" = { fg = "definition" }
"tag.error" = { fg = "error-red", underline = { style = "line" } }
"attribute" = { fg = "fg" }
"namespace" = { fg = "definition" }
"label" = { fg = "constant" }

# MARKUP - For markdown/documentation
"markup.heading" = { fg = "definition", modifiers = ["bold"] }
"markup.list" = { fg = "fg" }
"markup.bold" = { modifiers = ["bold"] }
"markup.italic" = { modifiers = ["italic"] }
"markup.link.url" = { fg = "string", modifiers = ["underlined"] }
"markup.link.text" = { fg = "definition" }
"markup.quote" = { fg = "comment" }
"markup.raw" = { fg = "string" }

# DIFF - Version control
"diff.plus" = { fg = "string" }
"diff.minus" = { fg = "error-red" }
"diff.delta" = { fg = "highlight" }

[palette]
# Core colors (Alabaster-inspired)
fg = "#000000"           # Main text (Alabaster uses pure black)
bg = "#F7F7F7"           # Background (Alabaster's light grey)

# The 4 semantic colors
string = "#448C27"       # Green - strings & numbers
constant = "#7A3E9D"     # Magenta - constants, booleans
comment = "#AA3731"      # Red - comments (important!)
definition = "#325CC0"   # Blue - function/class definitions

# Supporting colors
punctuation = "#777777"  # Grey - dimmed operators/brackets
selection = "#DDE7ED"    # Light gray-blue - secondary selections (subtle but distinct)
selection-primary = "#BFDBFE"  # Light blue - primary selection (original Alabaster)
active = "#007ACC"       # Bright blue - cursor, active elements
highlight = "#FFBC5D"    # Orange - search, warnings
error-red = "#AA3731"    # Red - errors
panel = "#EEEEEE"        # Darker grey - UI panels, menus, popups
cursorline = "#EFEFEF"   # Subtle highlight - cursorline, ruler
jump-label = "#FF4500"   # Bright orange-red - jump destinations
inlay-hint = "#8090B8"   # Dimmed blue - virtual text (type hints)

# Diff colors
diff-green = "#448C27"   # Green - additions (same as string)
diff-red = "#AA3731"     # Red - deletions (same as error-red)
diff-orange = "#FFBC5D"  # Orange - changes (same as highlight)