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:
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"
+ }
+ }
+ ]
+}