solarized-osaka.zed

Solarized Osaka theme for the Zed editor
git clone https://git.bracken.jp/solarized-osaka.zed.git
Log | Files | Refs

commit a00f13db8e7ac9a49e3838db626d93e17b370c0d
Author: Chris Bracken <chris@bracken.jp>
Date:   Thu,  7 May 2026 22:03:00 +0900

Initial commit

Ported roughly from the vim theme.

Diffstat:
AMakefile | 2++
Aextension.toml | 7+++++++
Asolarized_osaka.py | 384++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Athemes/solarized-osaka.json | 677++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 1070 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile @@ -0,0 +1,2 @@ +build: + @python solarized_osaka.py diff --git a/extension.toml b/extension.toml @@ -0,0 +1,7 @@ +id = "solarized-osaka" +name = "Solarized Osaka" +version = "0.1.0" +schema_version = 1 +authors = ["cbracken"] +description = "Solarized Osaka — a dark teal take on Solarized for Zed" +repository = "https://codeberg.org/cbracken/solarized-osaka.zed" diff --git a/solarized_osaka.py b/solarized_osaka.py @@ -0,0 +1,384 @@ +#!/usr/bin/env python + +""" +Constructs themes/solarized-osaka.json + +Notes: +- Transparency is supported, just append to hex (e.g. `80` for 50%) +- More info: + - https://zed.dev/docs/themes + - https://zed.dev/docs/extensions/themes + - https://zed.dev/schema/themes/v0.2.0.json +""" + +import json + + +def hue2rgb(p, q, t): + if t < 0: + t += 1 + if t > 1: + t -= 1 + if t < 1 / 6: + return p + (q - p) * 6 * t + if t < 1 / 2: + return q + if t < 2 / 3: + return p + (q - p) * (2 / 3 - t) * 6 + return p + + +def mix(hex1, hex2, t=0.5): + """Linearly interpolate between two hex colors. t=0 → hex1, t=1 → hex2.""" + r1, g1, b1 = int(hex1[1:3], 16), int(hex1[3:5], 16), int(hex1[5:7], 16) + r2, g2, b2 = int(hex2[1:3], 16), int(hex2[3:5], 16), int(hex2[5:7], 16) + r, g, b = round(r1 + (r2 - r1) * t), round(g1 + (g2 - g1) * t), round(b1 + (b2 - b1) * t) + return f"#{r:02x}{g:02x}{b:02x}" + + +def hsl(h, s, l): + """Convert HSL (h: 0-360, s: 0-100, l: 0-100) to hex string.""" + h, s, l = h / 360, s / 100, l / 100 + if s == 0: + v = round(l * 255) + return f"#{v:02x}{v:02x}{v:02x}" + q = l * (1 + s) if l < 0.5 else l + s - l * s + p = 2 * l - q + r = hue2rgb(p, q, h + 1 / 3) + g = hue2rgb(p, q, h) + b = hue2rgb(p, q, h - 1 / 3) + return f"#{round(r * 255):02x}{round(g * 255):02x}{round(b * 255):02x}" + + +# Solarized Osaka base colors — base04 (darkest) through base4 (white) +_base04 = hsl(192, 100, 5) # darkest background (sidebars) +_base03 = hsl(192, 100, 11) # dark background +_base02 = hsl(192, 81, 14) # alt background +_base01 = hsl(194, 14, 40) # secondary content (dark); emphasized (light) +_base00 = hsl(196, 13, 45) # body text (light mode) +_base0 = hsl(186, 8, 65) # body text (dark mode) +_base1 = hsl(180, 7, 70) # emphasized (dark); secondary (light) +_base2 = hsl(46, 42, 88) # light background highlights +_base3 = hsl(44, 87, 94) # light background +_base4 = hsl(0, 0, 100) # white + +# Accent colors — 500 (main), 700 (darker), 300 (brighter) +_yellow = hsl(45, 100, 35) +_yellow300 = hsl(45, 100, 50) +_yellow700 = hsl(45, 100, 20) +_orange = hsl(18, 80, 44) +_red = hsl(1, 71, 52) +_red300 = hsl(1, 90, 64) +_red700 = hsl(1, 71, 42) +_magenta = hsl(331, 64, 52) +_magenta300 = hsl(331, 86, 64) +_magenta700 = hsl(331, 64, 42) +_violet = hsl(237, 43, 60) +_blue = hsl(205, 69, 49) +_blue300 = hsl(205, 90, 62) +_blue700 = hsl(205, 70, 35) +_cyan = hsl(175, 59, 40) +_cyan300 = hsl(175, 85, 55) +_cyan700 = hsl(182, 59, 25) +_green = hsl(68, 100, 30) +_green300 = hsl(76, 100, 49) +_green700 = hsl(68, 100, 20) + +# Dark variant: deep teal backgrounds, muted blue-green foregrounds +osaka_dark = { + "base04": _base04, "base03": _base03, "base02": _base02, + "base01": _base01, "base00": _base00, "base0": _base0, + "base1": _base1, "base2": _base2, "base3": _base3, "base4": _base4, + "yellow": _yellow, "yellow300": _yellow300, "yellow700": _yellow700, + "orange": _orange, + "red": _red, "red300": _red300, "red700": _red700, + "magenta": _magenta, "magenta300": _magenta300, "magenta700": _magenta700, + "violet": _violet, + "blue": _blue, "blue300": _blue300, "blue700": _blue700, + "cyan": _cyan, "cyan300": _cyan300, "cyan700": _cyan700, + "green": _green, "green300": _green300, "green700": _green700, + "bg1": _base04, # editor pane background + "bg2": _base03, # active line, hover, highlight surfaces + "bg_chrome": mix(_base04, _base03, 1/3), # chrome bars — 1/3 of the way from editor to highlight + "fg1": _base0, # body text / default code / primary content + "fg2": _base01, # comments / secondary content + "fg3": _base1, # optional emphasized content +} + +# Light variant: inverted base scale, inverted accent brightness, same hues +osaka_light = { + **osaka_dark, + "base04": _base4, "base03": _base3, "base02": _base2, + "base01": _base1, "base00": _base0, + "base0": _base00, "base1": _base01, + "base2": _base02, "base3": _base03, "base4": _base04, + # Accent variants inverted (300 ↔ 700) for readability on light backgrounds + "yellow300": _yellow700, "yellow700": _yellow300, + "red300": _red700, "red700": _red300, + "magenta300": _magenta700, "magenta700": _magenta300, + "blue300": _blue700, "blue700": _blue300, + "cyan300": _cyan700, "cyan700": _cyan300, + "green300": _green700, "green700": _green300, + "bg1": _base3, # editor pane background + "bg2": _base2, # active line, hover, highlight surfaces + "bg_chrome": mix(_base3, _base2, 1/3), # chrome bars — 1/3 of the way from editor to highlight + "fg1": _base00, # body text / default code / primary content + "fg2": _base1, # comments / secondary content + "fg3": _base01, # optional emphasized content +} + + +def osaka_theme(c): + players = [ + {"background": c[color], "cursor": c[color], "selection": c[color] + "66"} + for color in ["blue", "cyan", "green", "magenta", "orange", "red", "violet", "yellow"] + ] + syntax = { + "attribute": {"color": c["cyan"]}, + "boolean": {"color": c["yellow"]}, + "comment": {"color": c["fg2"], "font_style": "italic"}, + "comment.doc": {"color": c["fg2"], "font_style": "italic"}, + "constant": {"color": c["cyan"]}, + "constructor": {"color": c["blue"]}, + "embedded": {"color": c["fg1"]}, + "emphasis": {"color": c["blue"]}, + "emphasis.strong": {"color": c["blue"], "font_weight": 700}, + "enum": {"color": c["orange"]}, + "function": {"color": c["blue"]}, + "hint": {"color": c["cyan"], "font_weight": 700}, + "keyword": {"color": c["green"]}, + "label": {"color": c["blue"]}, + "link_text": {"color": c["blue"], "font_style": "italic"}, + "link_uri": {"color": c["violet"]}, + "number": {"color": c["magenta"]}, + "operator": {"color": c["cyan"]}, + "predictive": {"background_color": c["bg1"], "color": c["fg2"]}, + "preproc": {"color": c["orange"]}, + "primary": {"color": c["fg1"]}, + "property": {"color": c["blue"]}, + "punctuation": {"color": c["fg2"]}, + "punctuation.bracket": {"color": c["fg2"]}, + "punctuation.delimiter": {"color": c["fg2"]}, + "punctuation.list_marker": {"color": c["fg2"]}, + "punctuation.special": {"color": c["cyan"]}, + "string": {"color": c["cyan"]}, + "string.escape": {"color": c["orange"]}, + "string.regex": {"color": c["orange"]}, + "string.special": {"color": c["orange"]}, + "string.special.symbol": {"color": c["magenta"]}, + "tag": {"color": c["red"]}, + "text.literal": {"color": c["cyan"]}, + "title": {"color": c["orange"], "font_weight": 700}, + "type": {"color": c["yellow"]}, + "variable": {"color": c["fg1"]}, + "variable.special": {"color": c["orange"]}, + "variant": {"color": c["blue"]}, + } + return { + # All main accent hues for the accent strip + "accents": [c["red"], c["orange"], c["yellow"], c["green"], c["cyan"], c["blue"], c["magenta"]], + "background": c["bg1"], + # Opaque background — no bleed-through from wallpaper + "background.appearance": "opaque", + # Borders are subtle (bg2), not the prominent fg2 of stock Solarized + "border": c["bg2"], + "border.disabled": c["bg2"], + "border.focused": None, + "border.selected": c["bg2"], + "border.transparent": c["bg2"], + "border.variant": c["bg2"], + # Git / diff status + "conflict": c["violet"], + "conflict.background": c["bg1"], + "conflict.border": c["violet"], + "created": c["green"], + "created.background": c["bg1"], + "created.border": c["green"], + "deleted": c["red"], + "deleted.background": c["bg1"], + "deleted.border": c["red"], + "modified": c["blue"], + "modified.background": c["bg1"], + "modified.border": c["blue"], + "renamed": c["magenta"], + "renamed.background": c["bg1"] + "00", + "renamed.border": c["magenta"], + # Drop / drag + "drop_target.background": c["bg2"], + # Editor pane + "editor.active_line.background": c["bg2"] + "cb", + "editor.active_line_number": c["fg1"], + "editor.active_wrap_guide": c["bg2"], + "editor.background": c["bg1"], + "editor.document_highlight.bracket_background": c["bg2"] + "66", + "editor.document_highlight.read_background": c["blue"] + "33", + "editor.document_highlight.write_background": c["blue"] + "33", + "editor.foreground": c["fg1"], + "editor.gutter.background": c["bg1"], + "editor.highlighted_line.background": c["bg1"], + "editor.indent_guide": c["bg2"], + "editor.indent_guide_active": c["cyan"], + "editor.invisible": c["bg2"], + "editor.line_number": c["fg2"], + "editor.subheader.background": c["bg1"], + "editor.wrap_guide": c["bg2"], + # Interactive elements — cyan700 gives a distinctive teal pop for selected items + "element.active": c["bg2"], + "element.background": c["cyan700"], + "element.disabled": c["bg2"], + "element.hover": c["bg2"], + "element.selected": c["bg2"], + # Surfaces — bg_chrome sits between editor (bg1) and highlights (bg2) + "elevated_surface.background": c["bg_chrome"], + "surface.background": c["bg_chrome"], + # Diagnostics — transparent backgrounds so they don't wash over code + "error": c["red"], + "error.background": c["red"] + "00", + "error.border": "#ffffff00", + "warning": c["yellow"], + "warning.background": c["yellow"] + "00", + "warning.border": "#ffffff00", + "info": c["blue"], + "info.background": c["blue"] + "00", + "info.border": "#ffffff00", + "success": c["green"], + "success.background": c["bg1"] + "00", + "success.border": c["green"], + "hint": "#969696ff", + "hint.background": c["bg1"] + "00", + "hint.border": c["fg2"], + # Ghost elements (buttons, hover states) + "ghost_element.active": c["fg1"], + "ghost_element.background": c["bg2"], + "ghost_element.disabled": c["fg2"], + "ghost_element.hover": c["bg2"], + "ghost_element.selected": c["bg2"], + # Hidden / ignored files + "hidden": c["fg1"] + "80", + "hidden.background": c["bg1"], + "hidden.border": c["bg1"], + "ignored": c["fg1"], + "ignored.background": c["bg1"], + "ignored.border": c["fg2"], + # Icons + "icon": c["fg1"], + "icon.accent": c["blue"], + "icon.disabled": c["fg2"], + "icon.muted": c["fg2"], + "icon.placeholder": c["fg2"], + # Links + "link_text.hover": c["blue"], + # Panes and panels — all flush with bg1 so chrome disappears + "pane.focused_border": c["blue"], + "pane_group.border": c["bg2"], + "panel.background": c["bg_chrome"], + "panel.focused_border": c["blue"], + "panel.indent_guide": c["fg2"], + "panel.indent_guide_active": c["cyan"], + "panel.indent_guide_hover": c["fg1"], + # Players (collaborative cursors) + "players": players, + # AI predictive text + "predictive": c["magenta"], + "predictive.background": c["bg1"] + "00", + "predictive.border": c["magenta"], + # Scrollbar — neutral grays so it doesn't pull focus + "scrollbar.thumb.background": "#79797966", + "scrollbar.thumb.border": "#79797966", + "scrollbar.thumb.hover_background": "#646464b3", + "scrollbar.track.background": c["bg_chrome"], + "scrollbar.track.border": "#7f7f7f4d", + # Search + "search.match_background": c["orange"] + "56", + # Chrome bars — bg_chrome (between editor and highlight); active tab uses bg1 to connect to the editor pane + "status_bar.background": c["bg_chrome"], + "tab.active_background": c["bg1"], + "tab.inactive_background": c["bg_chrome"], + "tab_bar.background": c["bg_chrome"], + "title_bar.background": c["bg_chrome"], + "title_bar.inactive_background": c["bg_chrome"], + "toolbar.background": c["bg1"], + # Syntax + "syntax": syntax, + # Terminal — standard dark/bright ANSI pairs using Osaka accent variants + "terminal.ansi.background": c["bg1"], + "terminal.ansi.black": "#000000", + "terminal.ansi.bright_black": "#666666", + "terminal.ansi.red": c["red700"], + "terminal.ansi.bright_red": c["red"], + "terminal.ansi.green": c["green"], + "terminal.ansi.bright_green": c["green300"], + "terminal.ansi.yellow": c["yellow"], + "terminal.ansi.bright_yellow": c["yellow300"], + "terminal.ansi.blue": c["blue700"], + "terminal.ansi.bright_blue": c["blue"], + "terminal.ansi.magenta": c["magenta700"], + "terminal.ansi.bright_magenta": c["magenta"], + "terminal.ansi.cyan": c["cyan"], + "terminal.ansi.bright_cyan": c["cyan300"], + "terminal.ansi.white": c["base2"], + "terminal.ansi.bright_white": c["base3"], + "terminal.ansi.dim_black": "#000000", + "terminal.ansi.dim_blue": c["blue700"], + "terminal.ansi.dim_cyan": c["cyan700"], + "terminal.ansi.dim_green": c["green"], + "terminal.ansi.dim_magenta": c["magenta700"], + "terminal.ansi.dim_red": c["red700"], + "terminal.ansi.dim_white": c["base2"], + "terminal.ansi.dim_yellow": c["yellow"], + "terminal.background": c["bg1"], + "terminal.bright_foreground": c["fg3"], + "terminal.dim_foreground": c["fg2"], + "terminal.foreground": c["fg1"], + # Text + "text": c["fg1"], + "text.accent": c["fg3"], + "text.disabled": c["fg2"], + "text.muted": c["fg1"] + "80", + "text.placeholder": c["fg2"], + # Unreachable code + "unreachable": c["violet"], + "unreachable.background": c["bg1"], + "unreachable.border": c["violet"], + # Vim mode indicator colors + "vim.normal.background": c["blue"], + "vim.normal.foreground": c["base04"], + "vim.insert.background": c["green"], + "vim.insert.foreground": c["base04"], + "vim.replace.background": c["red"], + "vim.replace.foreground": c["base04"], + "vim.visual.background": c["magenta"], + "vim.visual.foreground": c["base04"], + "vim.visual_line.background": c["violet"], + "vim.visual_line.foreground": c["base04"], + "vim.visual_block.background": c["yellow"], + "vim.visual_block.foreground": c["base04"], + "vim.yank.background": c["fg1"] + "0b", + } + + +theme_dark = { + "appearance": "dark", + "name": "Solarized Osaka Dark", + "style": osaka_theme(osaka_dark), +} +print("Added Solarized Osaka Dark") + +theme_light = { + "appearance": "light", + "name": "Solarized Osaka Light", + "style": osaka_theme(osaka_light), +} +print("Added Solarized Osaka Light") + +output = { + "$schema": "https://zed.dev/schema/themes/v0.2.0.json", + "author": "cbracken", + "name": "Solarized Osaka", + "themes": [theme_dark, theme_light], +} + +json_file = "themes/solarized-osaka.json" +with open(json_file, "w") as f: + json.dump(output, f, indent=2) + print(f"Wrote to {json_file}") diff --git a/themes/solarized-osaka.json b/themes/solarized-osaka.json @@ -0,0 +1,677 @@ +{ + "$schema": "https://zed.dev/schema/themes/v0.2.0.json", + "author": "cbracken", + "name": "Solarized Osaka", + "themes": [ + { + "appearance": "dark", + "name": "Solarized Osaka Dark", + "style": { + "accents": [ + "#dc312e", + "#ca4c16", + "#b28600", + "#859900", + "#2aa298", + "#278bd3", + "#d33682" + ], + "background": "#00141a", + "background.appearance": "opaque", + "border": "#002d38", + "border.disabled": "#002d38", + "border.focused": null, + "border.selected": "#002d38", + "border.transparent": "#002d38", + "border.variant": "#002d38", + "conflict": "#6d72c5", + "conflict.background": "#00141a", + "conflict.border": "#6d72c5", + "created": "#859900", + "created.background": "#00141a", + "created.border": "#859900", + "deleted": "#dc312e", + "deleted.background": "#00141a", + "deleted.border": "#dc312e", + "modified": "#278bd3", + "modified.background": "#00141a", + "modified.border": "#278bd3", + "renamed": "#d33682", + "renamed.background": "#00141a00", + "renamed.border": "#d33682", + "drop_target.background": "#002d38", + "editor.active_line.background": "#002d38cb", + "editor.active_line_number": "#9fabad", + "editor.active_wrap_guide": "#002d38", + "editor.background": "#00141a", + "editor.document_highlight.bracket_background": "#002d3866", + "editor.document_highlight.read_background": "#278bd333", + "editor.document_highlight.write_background": "#278bd333", + "editor.foreground": "#9fabad", + "editor.gutter.background": "#00141a", + "editor.highlighted_line.background": "#00141a", + "editor.indent_guide": "#002d38", + "editor.indent_guide_active": "#2aa298", + "editor.invisible": "#002d38", + "editor.line_number": "#586e74", + "editor.subheader.background": "#00141a", + "editor.wrap_guide": "#002d38", + "element.active": "#002d38", + "element.background": "#1a6365", + "element.disabled": "#002d38", + "element.hover": "#002d38", + "element.selected": "#002d38", + "elevated_surface.background": "#001c24", + "surface.background": "#001c24", + "error": "#dc312e", + "error.background": "#dc312e00", + "error.border": "#ffffff00", + "warning": "#b28600", + "warning.background": "#b2860000", + "warning.border": "#ffffff00", + "info": "#278bd3", + "info.background": "#278bd300", + "info.border": "#ffffff00", + "success": "#859900", + "success.background": "#00141a00", + "success.border": "#859900", + "hint": "#969696ff", + "hint.background": "#00141a00", + "hint.border": "#586e74", + "ghost_element.active": "#9fabad", + "ghost_element.background": "#002d38", + "ghost_element.disabled": "#586e74", + "ghost_element.hover": "#002d38", + "ghost_element.selected": "#002d38", + "hidden": "#9fabad80", + "hidden.background": "#00141a", + "hidden.border": "#00141a", + "ignored": "#9fabad", + "ignored.background": "#00141a", + "ignored.border": "#586e74", + "icon": "#9fabad", + "icon.accent": "#278bd3", + "icon.disabled": "#586e74", + "icon.muted": "#586e74", + "icon.placeholder": "#586e74", + "link_text.hover": "#278bd3", + "pane.focused_border": "#278bd3", + "pane_group.border": "#002d38", + "panel.background": "#001c24", + "panel.focused_border": "#278bd3", + "panel.indent_guide": "#586e74", + "panel.indent_guide_active": "#2aa298", + "panel.indent_guide_hover": "#9fabad", + "players": [ + { + "background": "#278bd3", + "cursor": "#278bd3", + "selection": "#278bd366" + }, + { + "background": "#2aa298", + "cursor": "#2aa298", + "selection": "#2aa29866" + }, + { + "background": "#859900", + "cursor": "#859900", + "selection": "#85990066" + }, + { + "background": "#d33682", + "cursor": "#d33682", + "selection": "#d3368266" + }, + { + "background": "#ca4c16", + "cursor": "#ca4c16", + "selection": "#ca4c1666" + }, + { + "background": "#dc312e", + "cursor": "#dc312e", + "selection": "#dc312e66" + }, + { + "background": "#6d72c5", + "cursor": "#6d72c5", + "selection": "#6d72c566" + }, + { + "background": "#b28600", + "cursor": "#b28600", + "selection": "#b2860066" + } + ], + "predictive": "#d33682", + "predictive.background": "#00141a00", + "predictive.border": "#d33682", + "scrollbar.thumb.background": "#79797966", + "scrollbar.thumb.border": "#79797966", + "scrollbar.thumb.hover_background": "#646464b3", + "scrollbar.track.background": "#001c24", + "scrollbar.track.border": "#7f7f7f4d", + "search.match_background": "#ca4c1656", + "status_bar.background": "#001c24", + "tab.active_background": "#00141a", + "tab.inactive_background": "#001c24", + "tab_bar.background": "#001c24", + "title_bar.background": "#001c24", + "title_bar.inactive_background": "#001c24", + "toolbar.background": "#00141a", + "syntax": { + "attribute": { + "color": "#2aa298" + }, + "boolean": { + "color": "#b28600" + }, + "comment": { + "color": "#586e74", + "font_style": "italic" + }, + "comment.doc": { + "color": "#586e74", + "font_style": "italic" + }, + "constant": { + "color": "#2aa298" + }, + "constructor": { + "color": "#278bd3" + }, + "embedded": { + "color": "#9fabad" + }, + "emphasis": { + "color": "#278bd3" + }, + "emphasis.strong": { + "color": "#278bd3", + "font_weight": 700 + }, + "enum": { + "color": "#ca4c16" + }, + "function": { + "color": "#278bd3" + }, + "hint": { + "color": "#2aa298", + "font_weight": 700 + }, + "keyword": { + "color": "#859900" + }, + "label": { + "color": "#278bd3" + }, + "link_text": { + "color": "#278bd3", + "font_style": "italic" + }, + "link_uri": { + "color": "#6d72c5" + }, + "number": { + "color": "#d33682" + }, + "operator": { + "color": "#2aa298" + }, + "predictive": { + "background_color": "#00141a", + "color": "#586e74" + }, + "preproc": { + "color": "#ca4c16" + }, + "primary": { + "color": "#9fabad" + }, + "property": { + "color": "#278bd3" + }, + "punctuation": { + "color": "#586e74" + }, + "punctuation.bracket": { + "color": "#586e74" + }, + "punctuation.delimiter": { + "color": "#586e74" + }, + "punctuation.list_marker": { + "color": "#586e74" + }, + "punctuation.special": { + "color": "#2aa298" + }, + "string": { + "color": "#2aa298" + }, + "string.escape": { + "color": "#ca4c16" + }, + "string.regex": { + "color": "#ca4c16" + }, + "string.special": { + "color": "#ca4c16" + }, + "string.special.symbol": { + "color": "#d33682" + }, + "tag": { + "color": "#dc312e" + }, + "text.literal": { + "color": "#2aa298" + }, + "title": { + "color": "#ca4c16", + "font_weight": 700 + }, + "type": { + "color": "#b28600" + }, + "variable": { + "color": "#9fabad" + }, + "variable.special": { + "color": "#ca4c16" + }, + "variant": { + "color": "#278bd3" + } + }, + "terminal.ansi.background": "#00141a", + "terminal.ansi.black": "#000000", + "terminal.ansi.bright_black": "#666666", + "terminal.ansi.red": "#b7221f", + "terminal.ansi.bright_red": "#dc312e", + "terminal.ansi.green": "#859900", + "terminal.ansi.bright_green": "#b7fa00", + "terminal.ansi.yellow": "#b28600", + "terminal.ansi.bright_yellow": "#ffbf00", + "terminal.ansi.blue": "#1b6498", + "terminal.ansi.bright_blue": "#278bd3", + "terminal.ansi.magenta": "#b02769", + "terminal.ansi.bright_magenta": "#d33682", + "terminal.ansi.cyan": "#2aa298", + "terminal.ansi.bright_cyan": "#2beede", + "terminal.ansi.white": "#ede7d4", + "terminal.ansi.bright_white": "#fdf6e2", + "terminal.ansi.dim_black": "#000000", + "terminal.ansi.dim_blue": "#1b6498", + "terminal.ansi.dim_cyan": "#1a6365", + "terminal.ansi.dim_green": "#859900", + "terminal.ansi.dim_magenta": "#b02769", + "terminal.ansi.dim_red": "#b7221f", + "terminal.ansi.dim_white": "#ede7d4", + "terminal.ansi.dim_yellow": "#b28600", + "terminal.background": "#00141a", + "terminal.bright_foreground": "#adb8b8", + "terminal.dim_foreground": "#586e74", + "terminal.foreground": "#9fabad", + "text": "#9fabad", + "text.accent": "#adb8b8", + "text.disabled": "#586e74", + "text.muted": "#9fabad80", + "text.placeholder": "#586e74", + "unreachable": "#6d72c5", + "unreachable.background": "#00141a", + "unreachable.border": "#6d72c5", + "vim.normal.background": "#278bd3", + "vim.normal.foreground": "#00141a", + "vim.insert.background": "#859900", + "vim.insert.foreground": "#00141a", + "vim.replace.background": "#dc312e", + "vim.replace.foreground": "#00141a", + "vim.visual.background": "#d33682", + "vim.visual.foreground": "#00141a", + "vim.visual_line.background": "#6d72c5", + "vim.visual_line.foreground": "#00141a", + "vim.visual_block.background": "#b28600", + "vim.visual_block.foreground": "#00141a", + "vim.yank.background": "#9fabad0b" + } + }, + { + "appearance": "light", + "name": "Solarized Osaka Light", + "style": { + "accents": [ + "#dc312e", + "#ca4c16", + "#b28600", + "#859900", + "#2aa298", + "#278bd3", + "#d33682" + ], + "background": "#fdf6e2", + "background.appearance": "opaque", + "border": "#ede7d4", + "border.disabled": "#ede7d4", + "border.focused": null, + "border.selected": "#ede7d4", + "border.transparent": "#ede7d4", + "border.variant": "#ede7d4", + "conflict": "#6d72c5", + "conflict.background": "#fdf6e2", + "conflict.border": "#6d72c5", + "created": "#859900", + "created.background": "#fdf6e2", + "created.border": "#859900", + "deleted": "#dc312e", + "deleted.background": "#fdf6e2", + "deleted.border": "#dc312e", + "modified": "#278bd3", + "modified.background": "#fdf6e2", + "modified.border": "#278bd3", + "renamed": "#d33682", + "renamed.background": "#fdf6e200", + "renamed.border": "#d33682", + "drop_target.background": "#ede7d4", + "editor.active_line.background": "#ede7d4cb", + "editor.active_line_number": "#647a82", + "editor.active_wrap_guide": "#ede7d4", + "editor.background": "#fdf6e2", + "editor.document_highlight.bracket_background": "#ede7d466", + "editor.document_highlight.read_background": "#278bd333", + "editor.document_highlight.write_background": "#278bd333", + "editor.foreground": "#647a82", + "editor.gutter.background": "#fdf6e2", + "editor.highlighted_line.background": "#fdf6e2", + "editor.indent_guide": "#ede7d4", + "editor.indent_guide_active": "#2aa298", + "editor.invisible": "#ede7d4", + "editor.line_number": "#adb8b8", + "editor.subheader.background": "#fdf6e2", + "editor.wrap_guide": "#ede7d4", + "element.active": "#ede7d4", + "element.background": "#2beede", + "element.disabled": "#ede7d4", + "element.hover": "#ede7d4", + "element.selected": "#ede7d4", + "elevated_surface.background": "#f8f1dd", + "surface.background": "#f8f1dd", + "error": "#dc312e", + "error.background": "#dc312e00", + "error.border": "#ffffff00", + "warning": "#b28600", + "warning.background": "#b2860000", + "warning.border": "#ffffff00", + "info": "#278bd3", + "info.background": "#278bd300", + "info.border": "#ffffff00", + "success": "#859900", + "success.background": "#fdf6e200", + "success.border": "#859900", + "hint": "#969696ff", + "hint.background": "#fdf6e200", + "hint.border": "#adb8b8", + "ghost_element.active": "#647a82", + "ghost_element.background": "#ede7d4", + "ghost_element.disabled": "#adb8b8", + "ghost_element.hover": "#ede7d4", + "ghost_element.selected": "#ede7d4", + "hidden": "#647a8280", + "hidden.background": "#fdf6e2", + "hidden.border": "#fdf6e2", + "ignored": "#647a82", + "ignored.background": "#fdf6e2", + "ignored.border": "#adb8b8", + "icon": "#647a82", + "icon.accent": "#278bd3", + "icon.disabled": "#adb8b8", + "icon.muted": "#adb8b8", + "icon.placeholder": "#adb8b8", + "link_text.hover": "#278bd3", + "pane.focused_border": "#278bd3", + "pane_group.border": "#ede7d4", + "panel.background": "#f8f1dd", + "panel.focused_border": "#278bd3", + "panel.indent_guide": "#adb8b8", + "panel.indent_guide_active": "#2aa298", + "panel.indent_guide_hover": "#647a82", + "players": [ + { + "background": "#278bd3", + "cursor": "#278bd3", + "selection": "#278bd366" + }, + { + "background": "#2aa298", + "cursor": "#2aa298", + "selection": "#2aa29866" + }, + { + "background": "#859900", + "cursor": "#859900", + "selection": "#85990066" + }, + { + "background": "#d33682", + "cursor": "#d33682", + "selection": "#d3368266" + }, + { + "background": "#ca4c16", + "cursor": "#ca4c16", + "selection": "#ca4c1666" + }, + { + "background": "#dc312e", + "cursor": "#dc312e", + "selection": "#dc312e66" + }, + { + "background": "#6d72c5", + "cursor": "#6d72c5", + "selection": "#6d72c566" + }, + { + "background": "#b28600", + "cursor": "#b28600", + "selection": "#b2860066" + } + ], + "predictive": "#d33682", + "predictive.background": "#fdf6e200", + "predictive.border": "#d33682", + "scrollbar.thumb.background": "#79797966", + "scrollbar.thumb.border": "#79797966", + "scrollbar.thumb.hover_background": "#646464b3", + "scrollbar.track.background": "#f8f1dd", + "scrollbar.track.border": "#7f7f7f4d", + "search.match_background": "#ca4c1656", + "status_bar.background": "#f8f1dd", + "tab.active_background": "#fdf6e2", + "tab.inactive_background": "#f8f1dd", + "tab_bar.background": "#f8f1dd", + "title_bar.background": "#f8f1dd", + "title_bar.inactive_background": "#f8f1dd", + "toolbar.background": "#fdf6e2", + "syntax": { + "attribute": { + "color": "#2aa298" + }, + "boolean": { + "color": "#b28600" + }, + "comment": { + "color": "#adb8b8", + "font_style": "italic" + }, + "comment.doc": { + "color": "#adb8b8", + "font_style": "italic" + }, + "constant": { + "color": "#2aa298" + }, + "constructor": { + "color": "#278bd3" + }, + "embedded": { + "color": "#647a82" + }, + "emphasis": { + "color": "#278bd3" + }, + "emphasis.strong": { + "color": "#278bd3", + "font_weight": 700 + }, + "enum": { + "color": "#ca4c16" + }, + "function": { + "color": "#278bd3" + }, + "hint": { + "color": "#2aa298", + "font_weight": 700 + }, + "keyword": { + "color": "#859900" + }, + "label": { + "color": "#278bd3" + }, + "link_text": { + "color": "#278bd3", + "font_style": "italic" + }, + "link_uri": { + "color": "#6d72c5" + }, + "number": { + "color": "#d33682" + }, + "operator": { + "color": "#2aa298" + }, + "predictive": { + "background_color": "#fdf6e2", + "color": "#adb8b8" + }, + "preproc": { + "color": "#ca4c16" + }, + "primary": { + "color": "#647a82" + }, + "property": { + "color": "#278bd3" + }, + "punctuation": { + "color": "#adb8b8" + }, + "punctuation.bracket": { + "color": "#adb8b8" + }, + "punctuation.delimiter": { + "color": "#adb8b8" + }, + "punctuation.list_marker": { + "color": "#adb8b8" + }, + "punctuation.special": { + "color": "#2aa298" + }, + "string": { + "color": "#2aa298" + }, + "string.escape": { + "color": "#ca4c16" + }, + "string.regex": { + "color": "#ca4c16" + }, + "string.special": { + "color": "#ca4c16" + }, + "string.special.symbol": { + "color": "#d33682" + }, + "tag": { + "color": "#dc312e" + }, + "text.literal": { + "color": "#2aa298" + }, + "title": { + "color": "#ca4c16", + "font_weight": 700 + }, + "type": { + "color": "#b28600" + }, + "variable": { + "color": "#647a82" + }, + "variable.special": { + "color": "#ca4c16" + }, + "variant": { + "color": "#278bd3" + } + }, + "terminal.ansi.background": "#fdf6e2", + "terminal.ansi.black": "#000000", + "terminal.ansi.bright_black": "#666666", + "terminal.ansi.red": "#f65351", + "terminal.ansi.bright_red": "#dc312e", + "terminal.ansi.green": "#859900", + "terminal.ansi.bright_green": "#586600", + "terminal.ansi.yellow": "#b28600", + "terminal.ansi.bright_yellow": "#664d00", + "terminal.ansi.blue": "#47adf5", + "terminal.ansi.bright_blue": "#278bd3", + "terminal.ansi.magenta": "#f254a1", + "terminal.ansi.bright_magenta": "#d33682", + "terminal.ansi.cyan": "#2aa298", + "terminal.ansi.bright_cyan": "#1a6365", + "terminal.ansi.white": "#073541", + "terminal.ansi.bright_white": "#002d38", + "terminal.ansi.dim_black": "#000000", + "terminal.ansi.dim_blue": "#47adf5", + "terminal.ansi.dim_cyan": "#2beede", + "terminal.ansi.dim_green": "#859900", + "terminal.ansi.dim_magenta": "#f254a1", + "terminal.ansi.dim_red": "#f65351", + "terminal.ansi.dim_white": "#073541", + "terminal.ansi.dim_yellow": "#b28600", + "terminal.background": "#fdf6e2", + "terminal.bright_foreground": "#586e74", + "terminal.dim_foreground": "#adb8b8", + "terminal.foreground": "#647a82", + "text": "#647a82", + "text.accent": "#586e74", + "text.disabled": "#adb8b8", + "text.muted": "#647a8280", + "text.placeholder": "#adb8b8", + "unreachable": "#6d72c5", + "unreachable.background": "#fdf6e2", + "unreachable.border": "#6d72c5", + "vim.normal.background": "#278bd3", + "vim.normal.foreground": "#ffffff", + "vim.insert.background": "#859900", + "vim.insert.foreground": "#ffffff", + "vim.replace.background": "#dc312e", + "vim.replace.foreground": "#ffffff", + "vim.visual.background": "#d33682", + "vim.visual.foreground": "#ffffff", + "vim.visual_line.background": "#6d72c5", + "vim.visual_line.foreground": "#ffffff", + "vim.visual_block.background": "#b28600", + "vim.visual_block.foreground": "#ffffff", + "vim.yank.background": "#647a820b" + } + } + ] +}