# wolf-alabaster-dark.toml # # Author: Wolf # 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)