gwen: Add Gwen theme family and make it the default

Bundle Gwen Dark (Hallowed Night) and Gwen Light in assets/themes/gwen,
derived from the champion's canon palette: hallowed mist cyan for
accents/functions, Gwen blue for types, violet for keywords, Camavor
gold for constants, pink-stitching rose for properties, mist mint for
strings over a Black Mist night base.

Set Gwen as the default theme pair in settings and the shipped settings
templates, surface it as the first tile in the onboarding theme picker
and the theme preview gallery, and guard the family with a bundled
theme regression test.
This commit is contained in:
yenru0 committed 2026-09-29 08:08:44 +09:00
1 parent 38490b4554
commit b2d4f99845
8 files changed
+926 -13

No files matched your search

+2 -2
View File
@@ -8,8 +8,8 @@
// - "dark": Use the theme indicated by the "dark" field
"theme": {
"mode": "system",
"light": "One Light",
"dark": "One Dark",
"light": "Gwen Light",
"dark": "Gwen Dark",
},
"icon_theme": "Zed (Default)",
// The name of a base set of key bindings to use.
+2 -2
View File
@@ -11,7 +11,7 @@
"buffer_font_size": 15,
"theme": {
"mode": "system",
"light": "One Light",
"dark": "One Dark",
"light": "Gwen Light",
"dark": "Gwen Dark",
},
}
+861
View File
@@ -0,0 +1,861 @@
{
"$schema": "https://zed.dev/schema/themes/v0.2.0.json",
"name": "Gwen",
"author": "Gwen Editor",
"themes": [
{
"name": "Gwen Dark",
"appearance": "dark",
"style": {
"border": "#263149ff",
"border.variant": "#1b2434ff",
"border.focused": "#2f8fa6ff",
"border.selected": "#2a7e93ff",
"border.transparent": "#00000000",
"border.disabled": "#202a3cff",
"elevated_surface.background": "#141c2bff",
"surface.background": "#111826ff",
"background": "#131a28ff",
"element.background": "#111826ff",
"element.hover": "#182131ff",
"element.active": "#1f2a3dff",
"element.selected": "#1f2a3dff",
"element.disabled": "#111826ff",
"drop_target.background": "#62d9e840",
"ghost_element.background": "#00000000",
"ghost_element.hover": "#182131ff",
"ghost_element.active": "#1f2a3dff",
"ghost_element.selected": "#1f2a3dff",
"ghost_element.disabled": "#111826ff",
"text": "#d7e0eeff",
"text.muted": "#9daabfff",
"text.placeholder": "#77849cff",
"text.disabled": "#77849cff",
"text.accent": "#62d9e8ff",
"icon": "#d7e0eeff",
"icon.muted": "#9daabfff",
"icon.disabled": "#67758dff",
"icon.placeholder": "#9daabfff",
"icon.accent": "#62d9e8ff",
"status_bar.background": "#131a28ff",
"title_bar.background": "#131a28ff",
"title_bar.inactive_background": "#10161fff",
"toolbar.background": "#0d121bff",
"tab_bar.background": "#111826ff",
"tab.inactive_background": "#111826ff",
"tab.active_background": "#0d121bff",
"search.match_background": "#62d9e833",
"search.active_match_background": "#d6b87866",
"panel.background": "#111826ff",
"panel.focused_border": null,
"pane.focused_border": null,
"scrollbar.thumb.background": "#93a6c440",
"scrollbar.thumb.hover_background": "#1f2a3dff",
"scrollbar.thumb.border": "#1b2434ff",
"scrollbar.track.background": "#00000000",
"scrollbar.track.border": "#10161fff",
"editor.foreground": "#bac7dbff",
"editor.background": "#0d121bff",
"editor.gutter.background": "#0d121bff",
"editor.subheader.background": "#111826ff",
"editor.active_line.background": "#152030b3",
"editor.highlighted_line.background": "#141d2cff",
"editor.line_number": "#667690",
"editor.active_line_number": "#8fd9e6",
"editor.hover_line_number": "#a9b6ca",
"editor.invisible": "#46536b",
"editor.wrap_guide": "#93a6c40d",
"editor.active_wrap_guide": "#93a6c41a",
"editor.document_highlight.read_background": "#62d9e81a",
"editor.document_highlight.write_background": "#44506a66",
"terminal.background": "#0b1018ff",
"terminal.foreground": "#bac7dbff",
"terminal.bright_foreground": "#d7e0eeff",
"terminal.dim_foreground": "#61708aff",
"terminal.ansi.black": "#141b28ff",
"terminal.ansi.bright_black": "#6e7d97ff",
"terminal.ansi.dim_black": "#0e141eff",
"terminal.ansi.red": "#e0708aff",
"terminal.ansi.bright_red": "#ec93a6ff",
"terminal.ansi.dim_red": "#9c4e60ff",
"terminal.ansi.green": "#7fe3cdff",
"terminal.ansi.bright_green": "#a0edddff",
"terminal.ansi.dim_green": "#589e8fff",
"terminal.ansi.yellow": "#d9b36aff",
"terminal.ansi.bright_yellow": "#e6c98fff",
"terminal.ansi.dim_yellow": "#977c4aff",
"terminal.ansi.blue": "#6fa8f0ff",
"terminal.ansi.bright_blue": "#93bff5ff",
"terminal.ansi.dim_blue": "#4d75a8ff",
"terminal.ansi.magenta": "#b79cf2ff",
"terminal.ansi.bright_magenta": "#cbb7f6ff",
"terminal.ansi.dim_magenta": "#806da9ff",
"terminal.ansi.cyan": "#62d9e8ff",
"terminal.ansi.bright_cyan": "#8ae4efff",
"terminal.ansi.dim_cyan": "#4497a2ff",
"terminal.ansi.white": "#c3cfe0ff",
"terminal.ansi.bright_white": "#f2f6fbff",
"terminal.ansi.dim_white": "#8894a8ff",
"link_text.hover": "#62d9e8ff",
"version_control.added": "#57d3b4ff",
"version_control.modified": "#d9b36aff",
"version_control.word_added": "#57d3b459",
"version_control.word_deleted": "#e0708a66",
"version_control.deleted": "#e0708aff",
"version_control.conflict_marker.ours": "#7fe3cd1a",
"version_control.conflict_marker.theirs": "#62d9e81a",
"conflict": "#d9b36aff",
"conflict.background": "#d9b36a1a",
"conflict.border": "#5c4a26ff",
"created": "#57d3b4ff",
"created.background": "#57d3b41a",
"created.border": "#23584aff",
"deleted": "#e0708aff",
"deleted.background": "#e0708a1a",
"deleted.border": "#5c2b39ff",
"error": "#e0708aff",
"error.background": "#e0708a1a",
"error.border": "#5c2b39ff",
"hidden": "#77849cff",
"hidden.background": "#67758d1a",
"hidden.border": "#202a3cff",
"hint": "#7e93b4ff",
"hint.background": "#7e93b41a",
"hint.border": "#2a7e93ff",
"ignored": "#77849cff",
"ignored.background": "#67758d1a",
"ignored.border": "#263149ff",
"info": "#62d9e8ff",
"info.background": "#62d9e81a",
"info.border": "#2a7e93ff",
"modified": "#d9b36aff",
"modified.background": "#d9b36a1a",
"modified.border": "#5c4a26ff",
"predictive": "#55688aff",
"predictive.background": "#55688a1a",
"predictive.border": "#23584aff",
"renamed": "#62d9e8ff",
"renamed.background": "#62d9e81a",
"renamed.border": "#2a7e93ff",
"success": "#57d3b4ff",
"success.background": "#57d3b41a",
"success.border": "#23584aff",
"unreachable": "#9daabfff",
"unreachable.background": "#93a6c41a",
"unreachable.border": "#263149ff",
"warning": "#d9b36aff",
"warning.background": "#d9b36a1a",
"warning.border": "#5c4a26ff",
"players": [
{
"cursor": "#62d9e8ff",
"background": "#62d9e8ff",
"selection": "#62d9e83d"
},
{
"cursor": "#e89babff",
"background": "#e89babff",
"selection": "#e89bab3d"
},
{
"cursor": "#d6b878ff",
"background": "#d6b878ff",
"selection": "#d6b8783d"
},
{
"cursor": "#b79cf2ff",
"background": "#b79cf2ff",
"selection": "#b79cf23d"
},
{
"cursor": "#6fa8f0ff",
"background": "#6fa8f0ff",
"selection": "#6fa8f03d"
},
{
"cursor": "#7fe3cdff",
"background": "#7fe3cdff",
"selection": "#7fe3cd3d"
},
{
"cursor": "#9aa4e8ff",
"background": "#9aa4e8ff",
"selection": "#9aa4e83d"
},
{
"cursor": "#93a6c4ff",
"background": "#93a6c4ff",
"selection": "#93a6c43d"
}
],
"accents": [
"#62d9e8ff",
"#6fa8f0ff",
"#b79cf2ff",
"#e89babff",
"#d6b878ff",
"#7fe3cdff"
],
"syntax": {
"attribute": {
"color": "#62d9e8ff",
"font_style": null,
"font_weight": null
},
"boolean": {
"color": "#d6b878ff",
"font_style": null,
"font_weight": null
},
"comment": {
"color": "#6e7d97ff",
"font_style": null,
"font_weight": null
},
"comment.doc": {
"color": "#7e8ca3ff",
"font_style": null,
"font_weight": null
},
"constant": {
"color": "#d6b878ff",
"font_style": null,
"font_weight": null
},
"constructor": {
"color": "#62d9e8ff",
"font_style": null,
"font_weight": null
},
"embedded": {
"color": "#d7e0eeff",
"font_style": null,
"font_weight": null
},
"emphasis": {
"color": "#62d9e8ff",
"font_style": null,
"font_weight": null
},
"emphasis.strong": {
"color": "#d6b878ff",
"font_style": null,
"font_weight": 700
},
"enum": {
"color": "#6fa8f0ff",
"font_style": null,
"font_weight": null
},
"function": {
"color": "#62d9e8ff",
"font_style": null,
"font_weight": null
},
"hint": {
"color": "#7e93b4ff",
"font_style": null,
"font_weight": null
},
"keyword": {
"color": "#b79cf2ff",
"font_style": null,
"font_weight": null
},
"label": {
"color": "#62d9e8ff",
"font_style": null,
"font_weight": null
},
"link_text": {
"color": "#62d9e8ff",
"font_style": "italic",
"font_weight": null
},
"link_uri": {
"color": "#6fa8f0ff",
"font_style": null,
"font_weight": null
},
"namespace": {
"color": "#d7e0eeff",
"font_style": null,
"font_weight": null
},
"number": {
"color": "#d6b878ff",
"font_style": null,
"font_weight": null
},
"operator": {
"color": "#6fa8f0ff",
"font_style": null,
"font_weight": null
},
"predictive": {
"color": "#64789cff",
"font_style": "italic",
"font_weight": null
},
"preproc": {
"color": "#b79cf2ff",
"font_style": null,
"font_weight": null
},
"primary": {
"color": "#bac7dbff",
"font_style": null,
"font_weight": null
},
"property": {
"color": "#e89babff",
"font_style": null,
"font_weight": null
},
"punctuation": {
"color": "#bac7dbff",
"font_style": null,
"font_weight": null
},
"punctuation.bracket": {
"color": "#c6d2e2ff",
"font_style": null,
"font_weight": null
},
"punctuation.delimiter": {
"color": "#c6d2e2ff",
"font_style": null,
"font_weight": null
},
"punctuation.list_marker": {
"color": "#e89babff",
"font_style": null,
"font_weight": null
},
"punctuation.markup": {
"color": "#e89babff",
"font_style": null,
"font_weight": null
},
"punctuation.special": {
"color": "#c97f92ff",
"font_style": null,
"font_weight": null
},
"selector": {
"color": "#d6b878ff",
"font_style": null,
"font_weight": null
},
"selector.pseudo": {
"color": "#62d9e8ff",
"font_style": null,
"font_weight": null
},
"string": {
"color": "#7fe3cdff",
"font_style": null,
"font_weight": null
},
"string.escape": {
"color": "#7e8ca3ff",
"font_style": null,
"font_weight": null
},
"string.regex": {
"color": "#d6b878ff",
"font_style": null,
"font_weight": null
},
"string.special": {
"color": "#d6b878ff",
"font_style": null,
"font_weight": null
},
"string.special.symbol": {
"color": "#d6b878ff",
"font_style": null,
"font_weight": null
},
"tag": {
"color": "#62d9e8ff",
"font_style": null,
"font_weight": null
},
"text.literal": {
"color": "#7fe3cdff",
"font_style": null,
"font_weight": null
},
"title": {
"color": "#e89babff",
"font_style": null,
"font_weight": 400
},
"type": {
"color": "#6fa8f0ff",
"font_style": null,
"font_weight": null
},
"variable": {
"color": "#bac7dbff",
"font_style": null,
"font_weight": null
},
"variable.parameter": {
"color": "#e89babff",
"font_style": null,
"font_weight": null
},
"variable.special": {
"color": "#d6b878ff",
"font_style": null,
"font_weight": null
},
"variant": {
"color": "#62d9e8ff",
"font_style": null,
"font_weight": null
},
"diff.plus": {
"color": "#7fe3cdff",
"font_style": null,
"font_weight": null
},
"diff.minus": {
"color": "#e0708aff",
"font_style": null,
"font_weight": null
}
}
}
},
{
"name": "Gwen Light",
"appearance": "light",
"style": {
"border": "#c3cfe0ff",
"border.variant": "#d9e2eeff",
"border.focused": "#12809bff",
"border.selected": "#0e6e86ff",
"border.transparent": "#00000000",
"border.disabled": "#cbd6e5ff",
"elevated_surface.background": "#f3f6fbff",
"surface.background": "#eff3f9ff",
"background": "#e9eef6ff",
"element.background": "#eff3f9ff",
"element.hover": "#e3eaf4ff",
"element.active": "#d5dfeeff",
"element.selected": "#d5dfeeff",
"element.disabled": "#eff3f9ff",
"drop_target.background": "#0e7e9c33",
"ghost_element.background": "#00000000",
"ghost_element.hover": "#e3eaf4ff",
"ghost_element.active": "#d5dfeeff",
"ghost_element.selected": "#d5dfeeff",
"ghost_element.disabled": "#eff3f9ff",
"text": "#1b2534ff",
"text.muted": "#46536bff",
"text.placeholder": "#5e6c84ff",
"text.disabled": "#5e6c84ff",
"text.accent": "#0b7490ff",
"icon": "#1b2534ff",
"icon.muted": "#46536bff",
"icon.disabled": "#7a879cff",
"icon.placeholder": "#7a879cff",
"icon.accent": "#0b7490ff",
"status_bar.background": "#e9eef6ff",
"title_bar.background": "#e9eef6ff",
"title_bar.inactive_background": "#edf1f8ff",
"toolbar.background": "#f8fafdff",
"tab_bar.background": "#eff3f9ff",
"tab.inactive_background": "#eff3f9ff",
"tab.active_background": "#f8fafdff",
"search.match_background": "#0e7e9c2e",
"search.active_match_background": "#8a6a1f40",
"panel.background": "#eff3f9ff",
"panel.focused_border": null,
"pane.focused_border": null,
"scrollbar.thumb.background": "#46536b33",
"scrollbar.thumb.hover_background": "#d5dfeeff",
"scrollbar.thumb.border": "#d9e2eeff",
"scrollbar.track.background": "#00000000",
"scrollbar.track.border": "#edf1f8ff",
"editor.foreground": "#2b3850ff",
"editor.background": "#f8fafdff",
"editor.gutter.background": "#f8fafdff",
"editor.subheader.background": "#eff3f9ff",
"editor.active_line.background": "#e7eef7b3",
"editor.highlighted_line.background": "#eaf0f8ff",
"editor.line_number": "#6d7a92",
"editor.active_line_number": "#0b7490",
"editor.hover_line_number": "#5a6880",
"editor.invisible": "#9aa7bb",
"editor.wrap_guide": "#46536b0d",
"editor.active_wrap_guide": "#46536b1a",
"editor.document_highlight.read_background": "#0e7e9c14",
"editor.document_highlight.write_background": "#46536b33",
"terminal.background": "#f8fafdff",
"terminal.foreground": "#2b3850ff",
"terminal.bright_foreground": "#101826ff",
"terminal.dim_foreground": "#6c7a90ff",
"terminal.ansi.black": "#1b2534ff",
"terminal.ansi.bright_black": "#5a6880ff",
"terminal.ansi.dim_black": "#33405aff",
"terminal.ansi.red": "#b03a5bff",
"terminal.ansi.bright_red": "#8e2e49ff",
"terminal.ansi.dim_red": "#c97f92ff",
"terminal.ansi.green": "#177a5eff",
"terminal.ansi.bright_green": "#105a45ff",
"terminal.ansi.dim_green": "#6faf9cff",
"terminal.ansi.yellow": "#8a6a1fff",
"terminal.ansi.bright_yellow": "#6b5218ff",
"terminal.ansi.dim_yellow": "#b99c5fff",
"terminal.ansi.blue": "#1d5fbfff",
"terminal.ansi.bright_blue": "#174b97ff",
"terminal.ansi.dim_blue": "#7ba0d6ff",
"terminal.ansi.magenta": "#6b46c8ff",
"terminal.ansi.bright_magenta": "#5537a0ff",
"terminal.ansi.dim_magenta": "#a78fddff",
"terminal.ansi.cyan": "#0a6e81ff",
"terminal.ansi.bright_cyan": "#085a6aff",
"terminal.ansi.dim_cyan": "#5fa3b0ff",
"terminal.ansi.white": "#e9eef6ff",
"terminal.ansi.bright_white": "#ffffffff",
"terminal.ansi.dim_white": "#c3cfe0ff",
"link_text.hover": "#0b7490ff",
"version_control.added": "#177a5eff",
"version_control.modified": "#8a6a1fff",
"version_control.word_added": "#177a5e40",
"version_control.word_deleted": "#b03a5b4d",
"version_control.deleted": "#b03a5bff",
"version_control.conflict_marker.ours": "#177a5e1a",
"version_control.conflict_marker.theirs": "#0e7e9c1a",
"conflict": "#7a5c15ff",
"conflict.background": "#8a6a1f1a",
"conflict.border": "#b99c5fff",
"created": "#177a5eff",
"created.background": "#177a5e1a",
"created.border": "#6faf9cff",
"deleted": "#b03a5bff",
"deleted.background": "#b03a5b1a",
"deleted.border": "#c97f92ff",
"error": "#b03a5bff",
"error.background": "#b03a5b1a",
"error.border": "#c97f92ff",
"hidden": "#5e6c84ff",
"hidden.background": "#7a879c1a",
"hidden.border": "#c3cfe0ff",
"hint": "#526583ff",
"hint.background": "#5a6e8c1a",
"hint.border": "#6fb3bfff",
"ignored": "#5e6c84ff",
"ignored.background": "#7a879c1a",
"ignored.border": "#c3cfe0ff",
"info": "#0b7490ff",
"info.background": "#0b74901a",
"info.border": "#6fb3bfff",
"modified": "#7a5c15ff",
"modified.background": "#8a6a1f1a",
"modified.border": "#b99c5fff",
"predictive": "#8494acff",
"predictive.background": "#8494ac1a",
"predictive.border": "#6faf9cff",
"renamed": "#0b7490ff",
"renamed.background": "#0b74901a",
"renamed.border": "#6fb3bfff",
"success": "#177a5eff",
"success.background": "#177a5e1a",
"success.border": "#6faf9cff",
"unreachable": "#46536bff",
"unreachable.background": "#46536b1a",
"unreachable.border": "#c3cfe0ff",
"warning": "#7a5c15ff",
"warning.background": "#8a6a1f1a",
"warning.border": "#b99c5fff",
"players": [
{
"cursor": "#0b7f95ff",
"background": "#0b7f95ff",
"selection": "#0b7f953d"
},
{
"cursor": "#b03a5bff",
"background": "#b03a5bff",
"selection": "#b03a5b3d"
},
{
"cursor": "#8a6a1fff",
"background": "#8a6a1fff",
"selection": "#8a6a1f3d"
},
{
"cursor": "#6b46c8ff",
"background": "#6b46c8ff",
"selection": "#6b46c83d"
},
{
"cursor": "#1d5fbfff",
"background": "#1d5fbfff",
"selection": "#1d5fbf3d"
},
{
"cursor": "#177a5eff",
"background": "#177a5eff",
"selection": "#177a5e3d"
},
{
"cursor": "#5a5fc8ff",
"background": "#5a5fc8ff",
"selection": "#5a5fc83d"
},
{
"cursor": "#5a6880ff",
"background": "#5a6880ff",
"selection": "#5a68803d"
}
],
"accents": [
"#0b7f95ff",
"#1d5fbfff",
"#6b46c8ff",
"#b03a5bff",
"#8a6a1fff",
"#177a5eff"
],
"syntax": {
"attribute": {
"color": "#0a6e81ff",
"font_style": null,
"font_weight": null
},
"boolean": {
"color": "#8a6a1fff",
"font_style": null,
"font_weight": null
},
"comment": {
"color": "#5d6b84ff",
"font_style": null,
"font_weight": null
},
"comment.doc": {
"color": "#55637aff",
"font_style": null,
"font_weight": null
},
"constant": {
"color": "#8a6a1fff",
"font_style": null,
"font_weight": null
},
"constructor": {
"color": "#0a6e81ff",
"font_style": null,
"font_weight": null
},
"embedded": {
"color": "#1b2534ff",
"font_style": null,
"font_weight": null
},
"emphasis": {
"color": "#0a6e81ff",
"font_style": null,
"font_weight": null
},
"emphasis.strong": {
"color": "#8a6a1fff",
"font_style": null,
"font_weight": 700
},
"enum": {
"color": "#1d5fbfff",
"font_style": null,
"font_weight": null
},
"function": {
"color": "#0a6e81ff",
"font_style": null,
"font_weight": null
},
"hint": {
"color": "#5a6e8cff",
"font_style": null,
"font_weight": null
},
"keyword": {
"color": "#6b46c8ff",
"font_style": null,
"font_weight": null
},
"label": {
"color": "#0b7490ff",
"font_style": null,
"font_weight": null
},
"link_text": {
"color": "#0a6e81ff",
"font_style": "italic",
"font_weight": null
},
"link_uri": {
"color": "#1d5fbfff",
"font_style": null,
"font_weight": null
},
"namespace": {
"color": "#1b2534ff",
"font_style": null,
"font_weight": null
},
"number": {
"color": "#8a6a1fff",
"font_style": null,
"font_weight": null
},
"operator": {
"color": "#1d5fbfff",
"font_style": null,
"font_weight": null
},
"predictive": {
"color": "#8494acff",
"font_style": "italic",
"font_weight": null
},
"preproc": {
"color": "#6b46c8ff",
"font_style": null,
"font_weight": null
},
"primary": {
"color": "#2b3850ff",
"font_style": null,
"font_weight": null
},
"property": {
"color": "#b03a5bff",
"font_style": null,
"font_weight": null
},
"punctuation": {
"color": "#2b3850ff",
"font_style": null,
"font_weight": null
},
"punctuation.bracket": {
"color": "#1f2b42ff",
"font_style": null,
"font_weight": null
},
"punctuation.delimiter": {
"color": "#1f2b42ff",
"font_style": null,
"font_weight": null
},
"punctuation.list_marker": {
"color": "#b03a5bff",
"font_style": null,
"font_weight": null
},
"punctuation.markup": {
"color": "#b03a5bff",
"font_style": null,
"font_weight": null
},
"punctuation.special": {
"color": "#8e2e49ff",
"font_style": null,
"font_weight": null
},
"selector": {
"color": "#8a6a1fff",
"font_style": null,
"font_weight": null
},
"selector.pseudo": {
"color": "#0a6e81ff",
"font_style": null,
"font_weight": null
},
"string": {
"color": "#177a5eff",
"font_style": null,
"font_weight": null
},
"string.escape": {
"color": "#55637aff",
"font_style": null,
"font_weight": null
},
"string.regex": {
"color": "#8a6a1fff",
"font_style": null,
"font_weight": null
},
"string.special": {
"color": "#8a6a1fff",
"font_style": null,
"font_weight": null
},
"string.special.symbol": {
"color": "#8a6a1fff",
"font_style": null,
"font_weight": null
},
"tag": {
"color": "#0a6e81ff",
"font_style": null,
"font_weight": null
},
"text.literal": {
"color": "#177a5eff",
"font_style": null,
"font_weight": null
},
"title": {
"color": "#b03a5bff",
"font_style": null,
"font_weight": 400
},
"type": {
"color": "#1d5fbfff",
"font_style": null,
"font_weight": null
},
"variable": {
"color": "#2b3850ff",
"font_style": null,
"font_weight": null
},
"variable.parameter": {
"color": "#b03a5bff",
"font_style": null,
"font_weight": null
},
"variable.special": {
"color": "#8a6a1fff",
"font_style": null,
"font_weight": null
},
"variant": {
"color": "#0a6e81ff",
"font_style": null,
"font_weight": null
},
"diff.plus": {
"color": "#177a5eff",
"font_style": null,
"font_weight": null
},
"diff.minus": {
"color": "#b03a5bff",
"font_style": null,
"font_weight": null
}
}
}
}
]
}
+6 -5
View File
@@ -26,9 +26,10 @@ use crate::{
theme_preview::{ThemePreviewStyle, ThemePreviewTile},
};
const LIGHT_THEMES: [&str; 3] = ["One Light", "Ayu Light", "Gruvbox Light"];
const DARK_THEMES: [&str; 3] = ["One Dark", "Ayu Dark", "Gruvbox Dark"];
const FAMILY_NAMES: [SharedString; 3] = [
const LIGHT_THEMES: [&str; 4] = ["Gwen Light", "One Light", "Ayu Light", "Gruvbox Light"];
const DARK_THEMES: [&str; 4] = ["Gwen Dark", "One Dark", "Ayu Dark", "Gruvbox Dark"];
const FAMILY_NAMES: [SharedString; 4] = [
SharedString::new_static("Gwen"),
SharedString::new_static("One"),
SharedString::new_static("Ayu"),
SharedString::new_static("Gruvbox"),
@@ -103,7 +104,7 @@ fn render_theme_section(tab_index: &mut isize, cx: &mut App) -> impl IntoElement
tab_index: &mut isize,
theme_selection: &ThemeSelection,
cx: &mut App,
) -> [impl IntoElement; 3] {
) -> [impl IntoElement; 4] {
let system_appearance = SystemAppearance::global(cx);
let theme_registry = ThemeRegistry::global(cx);
@@ -128,7 +129,7 @@ fn render_theme_section(tab_index: &mut isize, cx: &mut App) -> impl IntoElement
let themes = theme_names.map(|theme| theme_registry.get(theme).unwrap());
[0, 1, 2].map(|index| {
[0, 1, 2, 3].map(|index| {
let theme = &themes[index];
let is_selected = theme.name == current_theme_name;
let name = theme.name.clone();
+4
View File
@@ -322,12 +322,16 @@ impl Component for ThemePreviewTile {
fn preview(_window: &mut Window, cx: &mut App) -> AnyElement {
let theme_registry = ThemeRegistry::global(cx);
let gwen_dark = theme_registry.get("Gwen Dark");
let gwen_light = theme_registry.get("Gwen Light");
let one_dark = theme_registry.get("One Dark");
let one_light = theme_registry.get("One Light");
let gruvbox_dark = theme_registry.get("Gruvbox Dark");
let gruvbox_light = theme_registry.get("Gruvbox Light");
let themes_to_preview = vec![
gwen_dark.ok(),
gwen_light.ok(),
one_dark.clone().ok(),
one_light.ok(),
gruvbox_dark.ok(),
+2 -2
View File
@@ -338,8 +338,8 @@ pub enum ThemeSelection {
},
}
pub const DEFAULT_LIGHT_THEME: &'static str = "One Light";
pub const DEFAULT_DARK_THEME: &'static str = "One Dark";
pub const DEFAULT_LIGHT_THEME: &'static str = "Gwen Light";
pub const DEFAULT_DARK_THEME: &'static str = "Gwen Dark";
impl Default for ThemeSelection {
fn default() -> Self {
+2 -2
View File
@@ -19165,8 +19165,8 @@ mod tests {
parsed["theme"],
serde_json::json!({
"mode": "system",
"light": "One Light",
"dark": "One Dark"
"light": "Gwen Light",
"dark": "Gwen Dark"
})
);
+47
View File
@@ -6030,6 +6030,53 @@ mod tests {
assert!(has_default_theme);
}
#[gpui::test]
fn test_bundled_gwen_theme(cx: &mut App) {
cx.text_system()
.add_fonts(vec![
Assets
.load("fonts/lilex/Lilex-Regular.ttf")
.unwrap()
.unwrap(),
Assets
.load("fonts/ibm-plex-sans/IBMPlexSans-Regular.ttf")
.unwrap()
.unwrap(),
])
.unwrap();
settings::init(cx);
theme_settings::init(theme::LoadThemes::All(Box::new(Assets)), cx);
let themes = ThemeRegistry::global(cx);
let dark = themes
.get("Gwen Dark")
.expect("Gwen Dark should ship as a bundled theme");
let light = themes
.get("Gwen Light")
.expect("Gwen Light should ship as a bundled theme");
assert_eq!(dark.appearance, theme::Appearance::Dark);
assert_eq!(light.appearance, theme::Appearance::Light);
assert_eq!(
dark.styles.colors.editor_background,
theme::try_parse_color("#0d121bff").unwrap()
);
assert_eq!(
light.styles.colors.editor_background,
theme::try_parse_color("#f8fafdff").unwrap()
);
// With no user settings written, the fork's official theme is selected.
let theme_selection = &ThemeSettings::get_global(cx).theme;
assert_eq!(
theme_selection.name(theme::Appearance::Dark).0.as_ref(),
"Gwen Dark"
);
assert_eq!(
theme_selection.name(theme::Appearance::Light).0.as_ref(),
"Gwen Light"
);
}
#[gpui::test]
async fn test_bundled_files_editor(cx: &mut TestAppContext) {
let app_state = init_test(cx);