mirror of
https://github.com/helix-editor/helix
synced 2026-03-06 20:31:42 +01:00
Addresses feedback from @Rudxain on #15102. Added scopes: - ui.virtual.inlay-hint: dimmed blue (matches type color but muted) - ui.cursorline, ui.cursorcolumn: subtle line highlighting - ui.virtual.ruler: ruler column background - ui.gutter: gutter background - diagnostic.deprecated: crossed-out styling - tag.error: error styling for malformed markup
170 lines
6.5 KiB
INI
170 lines
6.5 KiB
INI
# wolf-alabaster-dark.toml
|
|
#
|
|
# Author: Wolf <wolf@zv.cx>
|
|
# 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-dark.toml
|
|
#
|
|
# This is a dark-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 (Original Alabaster Dark)
|
|
fg = "#CECECE" # Main text - light grey
|
|
bg = "#0E1415" # Background - very dark blue-black
|
|
|
|
# The 4 semantic colors (Original Alabaster Dark)
|
|
string = "#95CB82" # Green - strings & numbers
|
|
constant = "#CC8BC9" # Magenta - constants, booleans
|
|
comment = "#DFDF8E" # Yellow - comments (important!)
|
|
definition = "#71ADE7" # Blue - function/class definitions
|
|
|
|
# Supporting colors
|
|
punctuation = "#8C8C8C" # Grey - dimmed operators/brackets
|
|
selection = "#1E3A5F" # Very dark blue - secondary selections (subtle)
|
|
selection-primary = "#4A7BA7" # Bright blue - primary selection (clearly distinct)
|
|
active = "#CD974B" # Golden brown - cursor, active elements (original Alabaster Dark)
|
|
highlight = "#FF9800" # Orange - search, warnings
|
|
error-red = "#DFDF8E" # Yellow - errors (use comment color for visibility)
|
|
panel = "#252526" # Slightly lighter grey - UI panels, menus, popups
|
|
cursorline = "#1A2022" # Subtle highlight - cursorline, ruler
|
|
jump-label = "#FF6B35" # Bright orange - jump destinations
|
|
inlay-hint = "#4A7090" # Dimmed blue - virtual text (type hints)
|
|
|
|
# Diff colors
|
|
diff-green = "#95CB82" # Green - additions (same as string)
|
|
diff-red = "#DFDF8E" # Yellow - deletions (same as error-red)
|
|
diff-orange = "#FF9800" # Orange - changes (same as highlight)
|