From cf2b390f6e096e7a2ca93d4dece153eb13261a2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 19 Dec 2025 09:29:06 +0100 Subject: [PATCH] config: add [colors-dark] and [colors-light], replacing [colors] and [colors2] The main reason for having two color sections is to be able to switch between dark and light. Thus, it's better if the section names reflect this, rather than the more generic 'colors' and 'colors2' (which was the dark one and which was the light one, now again?) When the second color section was added, we kept the original name, colors, to make sure we didn't break existing configurations, and third-party themes. However, in the long run, it's probably better to be specific in the section naming, to avoid confusion. So, add 'colors-dark', and 'colors-light'. Keep 'colors' and 'colors2' as aliases for now, but mark them as deprecated. They WILL be removed in a future release. Also rename the option values for initial-color-theme, from 1/2, to dark/light. Keep the old ones for now, marked as deprecated. Update all bundled themes to use the new names. In the light-only themes (i.e. themes that define a single, light, theme), use colors-light, and set initial-color-theme=light. Possible improvements: disable color switching if only one color section has been explicitly configured (todo: figure out how to handle the default color theme values...) --- CHANGELOG.md | 7 + config.c | 128 ++++++++++++++--- config.h | 10 +- csi.c | 2 +- doc/foot.1.scd | 4 +- doc/foot.ini.5.scd | 57 ++++---- doc/footclient.1.scd | 4 +- foot.ini | 6 +- input.c | 6 +- key-binding.h | 2 + main.c | 8 +- osc.c | 44 +++--- render.c | 60 ++++---- server.c | 20 +-- server.h | 4 +- sixel.c | 6 +- terminal.c | 38 +++--- terminal.h | 4 +- tests/test-config.c | 196 +++++++++++++++++++-------- themes/aeroroot | 2 +- themes/alacritty | 2 +- themes/apprentice | 2 +- themes/ayu-mirage | 2 +- themes/catppuccin-frappe | 2 +- themes/catppuccin-latte | 5 +- themes/catppuccin-macchiato | 2 +- themes/catppuccin-mocha | 2 +- themes/chiba-dark | 2 +- themes/derp | 2 +- themes/deus | 2 +- themes/dracula | 2 +- themes/dracula-iterm | 2 +- themes/electrophoretic | 5 +- themes/gruvbox | 4 +- themes/gruvbox-dark | 2 +- themes/gruvbox-light | 5 +- themes/hacktober | 2 +- themes/iterm | 2 +- themes/jetbrains-darcula | 2 +- themes/kitty | 2 +- themes/material-amber | 5 +- themes/material-design | 2 +- themes/modus-operandi | 6 +- themes/modus-vivendi | 2 +- themes/modus-vivendi-tinted | 2 +- themes/molokai | 2 +- themes/monokai-pro | 2 +- themes/moonfly | 2 +- themes/neon | 2 +- themes/night-owl | 2 +- themes/nightfly | 2 +- themes/noirblaze | 2 +- themes/nord | 2 +- themes/nordiq | 2 +- themes/nvim | 4 +- themes/nvim-dark | 2 +- themes/nvim-light | 5 +- themes/onedark | 2 +- themes/onehalf-dark | 2 +- themes/panda | 2 +- themes/paper-color | 4 +- themes/paper-color-dark | 2 +- themes/paper-color-light | 5 +- themes/poimandres | 2 +- themes/rezza | 2 +- themes/rose-pine | 2 +- themes/rose-pine-dawn | 6 +- themes/rose-pine-moon | 2 +- themes/selenized | 4 +- themes/selenized-black | 2 +- themes/selenized-dark | 2 +- themes/selenized-light | 5 +- themes/selenized-white | 5 +- themes/solarized | 4 +- themes/solarized-dark | 2 +- themes/solarized-dark-normal-brights | 2 +- themes/solarized-light | 5 +- themes/solarized-normal-brights | 4 +- themes/srcery | 2 +- themes/starlight | 2 +- themes/tango | 2 +- themes/tempus-autumn | 2 +- themes/tempus-classic | 2 +- themes/tempus-dawn | 6 +- themes/tempus-day | 5 +- themes/tempus-dusk | 2 +- themes/tempus-fugit | 5 +- themes/tempus-future | 2 +- themes/tempus-night | 2 +- themes/tempus-past | 5 +- themes/tempus-rift | 2 +- themes/tempus-spring | 2 +- themes/tempus-summer | 2 +- themes/tempus-tempest | 2 +- themes/tempus-totus | 5 +- themes/tempus-warp | 2 +- themes/tempus-winter | 2 +- themes/tokyonight-light | 5 +- themes/tokyonight-night | 2 +- themes/tokyonight-storm | 2 +- themes/visibone | 2 +- themes/xterm | 2 +- themes/zenburn | 2 +- 103 files changed, 542 insertions(+), 298 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70ab43b3..ae9feb54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -74,6 +74,8 @@ `foot` and `footclient`), allowing you to set a custom toplevel tag. The compositor must implement the new `xdg-toplevel-tag-v1` Wayland protocol ([#2212][2212]). +* `[colors-dark]` section to `foot.ini`. Replaces `[colors]`. +* `[colors-light]` section to `foot.ini`. Replaces `[colors2]`. [2212]: https://codeberg.org/dnkl/foot/issues/2212 @@ -93,6 +95,11 @@ ### Deprecated + +* `[colors]` section in `foot.ini`. Use `[colors-dark]` instead. +* `[colors2]` section in `foot.ini`. Use `[colors-light]` instead. + + ### Removed ### Fixed diff --git a/config.c b/config.c index 515b088c..0340d418 100644 --- a/config.c +++ b/config.c @@ -144,6 +144,8 @@ static const char *const binding_action_map[] = { [BIND_ACTION_REGEX_COPY] = "regex-copy", [BIND_ACTION_THEME_SWITCH_1] = "color-theme-switch-1", [BIND_ACTION_THEME_SWITCH_2] = "color-theme-switch-2", + [BIND_ACTION_THEME_SWITCH_DARK] = "color-theme-switch-dark", + [BIND_ACTION_THEME_SWITCH_LIGHT] = "color-theme-switch-light", [BIND_ACTION_THEME_TOGGLE] = "color-theme-toggle", /* Mouse-specific actions */ @@ -1118,8 +1120,40 @@ parse_section_main(struct context *ctx) sizeof(conf->initial_color_theme) == sizeof(int), "enum is not 32-bit"); - return value_to_enum(ctx, (const char*[]){"1", "2", NULL}, - (int *)&conf->initial_color_theme); + if (!value_to_enum(ctx, (const char*[]){ + "dark", "light", "1", "2", NULL}, + (int *)&conf->initial_color_theme)) + return false; + + if (streq(ctx->value, "1")) { + LOG_WARN("%s:%d: [main].initial-color-theme=1 deprecated, " + "use [main].initial-color-theme=dark instead", + ctx->path, ctx->lineno); + + user_notification_add( + &ctx->conf->notifications, + USER_NOTIFICATION_DEPRECATED, + xstrdup("[main].initial-color-theme=1: " + "use [main].initial-color-theme=dark instead")); + + conf->initial_color_theme = COLOR_THEME_DARK; + } + + else if (streq(ctx->value, "2")) { + LOG_WARN("%s:%d: [main].initial-color-theme=2 deprecated, " + "use [main].initial-color-theme=light instead", + ctx->path, ctx->lineno); + + user_notification_add( + &ctx->conf->notifications, + USER_NOTIFICATION_DEPRECATED, + xstrdup("[main].initial-color-theme=2: " + "use [main].initial-color-theme=light instead")); + + conf->initial_color_theme = COLOR_THEME_LIGHT; + } + + return true; } else if (streq(key, "uppercase-regex-insert")) @@ -1555,16 +1589,44 @@ parse_color_theme(struct context *ctx, struct color_theme *theme) return true; } +static bool +parse_section_colors_dark(struct context *ctx) +{ + return parse_color_theme(ctx, &ctx->conf->colors_dark); +} + +static bool +parse_section_colors_light(struct context *ctx) +{ + return parse_color_theme(ctx, &ctx->conf->colors_light); +} + static bool parse_section_colors(struct context *ctx) { - return parse_color_theme(ctx, &ctx->conf->colors); + LOG_WARN("%s:%d: [colors]: deprecated; use [colors-dark] instead", + ctx->path, ctx->lineno); + + user_notification_add( + &ctx->conf->notifications, + USER_NOTIFICATION_DEPRECATED, + xstrdup("[colors]: use [colors-dark] instead")); + + return parse_color_theme(ctx, &ctx->conf->colors_dark); } static bool parse_section_colors2(struct context *ctx) { - return parse_color_theme(ctx, &ctx->conf->colors2); + LOG_WARN("%s:%d: [colors2]: deprecated; use [colors-light] instead", + ctx->path, ctx->lineno); + + user_notification_add( + &ctx->conf->notifications, + USER_NOTIFICATION_DEPRECATED, + xstrdup("[colors2]: use [colors-light] instead")); + + return parse_color_theme(ctx, &ctx->conf->colors_light); } static bool @@ -1610,14 +1672,14 @@ parse_section_cursor(struct context *ctx) if (!value_to_two_colors( ctx, - &conf->colors.cursor.text, - &conf->colors.cursor.cursor, + &conf->colors_dark.cursor.text, + &conf->colors_dark.cursor.cursor, false)) { return false; } - conf->colors.use_custom.cursor = true; + conf->colors_dark.use_custom.cursor = true; return true; } @@ -2268,6 +2330,29 @@ parse_key_binding_section(struct context *ctx, aux.regex_name = regex_name; } + if (action_map == binding_action_map && + action >= BIND_ACTION_THEME_SWITCH_1 && + action <= BIND_ACTION_THEME_SWITCH_2) + { + const char *use_instead = + action_map[action == BIND_ACTION_THEME_SWITCH_1 + ? BIND_ACTION_THEME_SWITCH_DARK + : BIND_ACTION_THEME_SWITCH_LIGHT]; + + const char *notif = action == BIND_ACTION_THEME_SWITCH_1 + ? "[key-bindings].color-theme-switch-1: use [key-bindings].color-theme-switch-dark instead" + : "[key-bindings].color-theme-switch-2: use [key-bindings].color-theme-switch-light instead"; + + LOG_WARN("%s:%d: [key-bindings].%s: deprecated, use %s instead", + ctx->path, ctx->lineno, + action_map[action], use_instead); + + user_notification_add( + &ctx->conf->notifications, + USER_NOTIFICATION_DEPRECATED, + xstrdup(notif)); + } + if (!value_to_key_combos(ctx, action, &aux, bindings, KEY_BINDING)) { free_binding_aux(&aux); return false; @@ -2958,8 +3043,8 @@ enum section { SECTION_SCROLLBACK, SECTION_URL, SECTION_REGEX, - SECTION_COLORS, - SECTION_COLORS2, + SECTION_COLORS_DARK, + SECTION_COLORS_LIGHT, SECTION_CURSOR, SECTION_MOUSE, SECTION_CSD, @@ -2971,6 +3056,11 @@ enum section { SECTION_ENVIRONMENT, SECTION_TWEAK, SECTION_TOUCH, + + /* Deprecated */ + SECTION_COLORS, + SECTION_COLORS2, + SECTION_COUNT, }; @@ -2989,8 +3079,8 @@ static const struct { [SECTION_SCROLLBACK] = {&parse_section_scrollback, "scrollback"}, [SECTION_URL] = {&parse_section_url, "url"}, [SECTION_REGEX] = {&parse_section_regex, "regex", true}, - [SECTION_COLORS] = {&parse_section_colors, "colors"}, - [SECTION_COLORS2] = {&parse_section_colors2, "colors2"}, + [SECTION_COLORS_DARK] = {&parse_section_colors_dark, "colors-dark"}, + [SECTION_COLORS_LIGHT] = {&parse_section_colors_light, "colors-light"}, [SECTION_CURSOR] = {&parse_section_cursor, "cursor"}, [SECTION_MOUSE] = {&parse_section_mouse, "mouse"}, [SECTION_CSD] = {&parse_section_csd, "csd"}, @@ -3002,6 +3092,10 @@ static const struct { [SECTION_ENVIRONMENT] = {&parse_section_environment, "environment"}, [SECTION_TWEAK] = {&parse_section_tweak, "tweak"}, [SECTION_TOUCH] = {&parse_section_touch, "touch"}, + + /* Deprecated */ + [SECTION_COLORS] = {&parse_section_colors, "colors"}, + [SECTION_COLORS2] = {&parse_section_colors2, "colors2"}, }; static_assert(ALEN(section_info) == SECTION_COUNT, "section info array size mismatch"); @@ -3435,7 +3529,7 @@ config_load(struct config *conf, const char *conf_path, }, .multiplier = 3., }, - .colors = { + .colors_dark = { .fg = default_foreground, .bg = default_background, .flash = 0x7f7f00, @@ -3455,7 +3549,7 @@ config_load(struct config *conf, const char *conf_path, .url = false, }, }, - .initial_color_theme = COLOR_THEME1, + .initial_color_theme = COLOR_THEME_DARK, .cursor = { .style = CURSOR_BLOCK, .unfocused_style = CURSOR_UNFOCUSED_HOLLOW, @@ -3535,10 +3629,10 @@ config_load(struct config *conf, const char *conf_path, .notifications = tll_init(), }; - memcpy(conf->colors.table, default_color_table, sizeof(default_color_table)); - memcpy(conf->colors.sixel, default_sixel_colors, sizeof(default_sixel_colors)); - memcpy(&conf->colors2, &conf->colors, sizeof(conf->colors)); - conf->colors2.dim_blend_towards = DIM_BLEND_TOWARDS_WHITE; + memcpy(conf->colors_dark.table, default_color_table, sizeof(default_color_table)); + memcpy(conf->colors_dark.sixel, default_sixel_colors, sizeof(default_sixel_colors)); + memcpy(&conf->colors_light, &conf->colors_dark, sizeof(conf->colors_dark)); + conf->colors_light.dim_blend_towards = DIM_BLEND_TOWARDS_WHITE; parse_modifiers(XKB_MOD_NAME_SHIFT, 5, &conf->mouse.selection_override_modifiers); diff --git a/config.h b/config.h index fc5e290e..9ca47753 100644 --- a/config.h +++ b/config.h @@ -195,8 +195,10 @@ struct color_theme { }; enum which_color_theme { - COLOR_THEME1, - COLOR_THEME2, + COLOR_THEME_DARK, + COLOR_THEME_LIGHT, + COLOR_THEME_1, /* Deprecated */ + COLOR_THEME_2, /* Deprecated */ }; enum shm_bit_depth { @@ -327,8 +329,8 @@ struct config { tll(struct custom_regex) custom_regexes; - struct color_theme colors; - struct color_theme colors2; + struct color_theme colors_dark; + struct color_theme colors_light; enum which_color_theme initial_color_theme; struct { diff --git a/csi.c b/csi.c index c5f616ac..7e0cf464 100644 --- a/csi.c +++ b/csi.c @@ -1578,7 +1578,7 @@ csi_dispatch(struct terminal *term, uint8_t final) int chars = snprintf( reply, sizeof(reply), "\033[?997;%dn", - term->colors.active_theme == COLOR_THEME1 ? 1 : 2); + term->colors.active_theme == COLOR_THEME_DARK ? 1 : 2); term_to_slave(term, reply, chars); break; diff --git a/doc/foot.1.scd b/doc/foot.1.scd index 60ba622b..7058e96f 100644 --- a/doc/foot.1.scd +++ b/doc/foot.1.scd @@ -695,8 +695,8 @@ variables to unset may be defined in *foot.ini*(5). The following signals have special meaning in foot: -- SIGUSR1: switch to color theme 1 (i.e. use the *[colors]* section). -- SIGUSR2: switch to color theme 2 (i.e. use the *[colors2]* section). +- SIGUSR1: switch to the dark color theme (*[colors-dark]*). +- SIGUSR2: switch to the light color theme (*[colors-light]*). Note: you can send SIGUSR1/SIGUSR2 to a *foot --server* process too, in which case all client instances will switch theme. Furthermore, all diff --git a/doc/foot.ini.5.scd b/doc/foot.ini.5.scd index c9782895..8bff9629 100644 --- a/doc/foot.ini.5.scd +++ b/doc/foot.ini.5.scd @@ -24,7 +24,7 @@ commented out will usually be installed to */etc/xdg/foot/foot.ini*. Options are set using KEY=VALUE pairs: - *\[colors\]*++ + *\[colors-dark\]*++ *background=000000*++ *foreground=ffffff* @@ -371,12 +371,12 @@ empty string to be set, but it must be quoted: *KEY=""*) Default: _yes_ *initial-color-theme* - Selects which color theme to use, *1*, or *2*. + Selects which color theme to use, *dark*, or *light*. - *1* uses the colors defined in the *colors* section, while *2* - uses the colors from the *colors2* section. + *dark* uses the colors defined in the *colors-dark* section, while + *light* uses the colors from the *colors-light* section. - Use the *color-theme-switch-1*, *color-theme-switch-2* and + Use the *color-theme-switch-dark*, *color-theme-switch-light* and *color-theme-toggle* key bindings to switch between the two themes at runtime, or send SIGUSR1/SIGUSR2 to the foot process (see *foot*(1) for details). @@ -987,19 +987,24 @@ applications can change these at runtime. Default: _400_. -# SECTION: colors +# SECTION: colors-dark, colors-light -This section controls the 16 ANSI colors, the default foreground and -background colors, and the extended 256 color palette. Note that +These two sections controls the 16 ANSI colors, the default foreground +and background colors, and the extended 256 color palette. Note that applications can change these at runtime. The colors are in RRGGBB format (i.e. plain old 6-digit hex values, without prefix). That is, they do *not* have an alpha component. You can configure the background transparency with the _alpha_ option. -In the context of private mode 2031 (Dark and Light Mode detection), -the primary theme (i.e. the *colors* section) is considered to be the -dark theme (since the default theme is dark). +*colors-dark* is intended to define a dark color theme, and +*colors-light* is intended to define a light color theme. You can +switch between them using the *color-theme-switch-dark*, +*color-theme-switch-light* and *color-theme-toggle* key bindings, or +by sending SIGUSR1/SIGUSR2 to the foot process. + +The default theme used is *colors-dark*, unless +*initial-color-theme=light* has been set. *cursor* Two space separated RRGGBB values (i.e. plain old 6-digit hex @@ -1098,7 +1103,7 @@ dark theme (since the default theme is dark). black makes the text darker, while blending towards white makes it whiter (but still dimmer than normal text). - Default: _black_ (*colors*), _white_ (*colors2*) + Default: _black_ (*colors-dark*), _white_ (*colors-light*) *selection-foreground*, *selection-background* Foreground (text) and background color to use in selected @@ -1135,20 +1140,6 @@ dark theme (since the default theme is dark). Flash translucency. A value in the range 0.0-1.0, where 0.0 means completely transparent, and 1.0 is opaque. Default: _0.5_. -# SECTION: colors2 - -This section defines an alternative color theme. It has the exact same -keys as the *colors* section. The default values are the same, except -for *dim-blend-towards*, which defaults to *white* instead. - -Note that values are not inherited. That is, if you set a value in -*colors*, but not in *colors2*, the value from *colors* is not -inherited by *colors2*. - -In the context of private mode 2031 (Dark and Light Mode detection), -the alternative theme (i.e. the *colors2* section) is considered to be -the light theme (since the default, the primary theme, is dark). - # SECTION: csd This section controls the look of the _CSDs_ (Client Side @@ -1455,16 +1446,16 @@ e.g. *search-start=none*. Default: _Control+Shift+u_. -*color-theme-switch-1*, *color-theme-switch-2*, *color-theme-toggle* - Switch between the primary color theme (defined in the *colors* - section), and the alternative color theme (defined in the - *colors2* section). +*color-theme-switch-dark*, *color-theme-switch-dark*, *color-theme-toggle* + Switch between the dark color theme (defined in the *colors-dark* + section), and the light color theme (defined in the *colors-light* + section). - *color-theme-switch-1* applies the primary color theme regardless + *color-theme-switch-dark* applies the dark color theme regardless of which color theme is currently active. - *color-theme-switch-2* applies the alternative color theme regardless - of which color theme is currently active. + *color-theme-switch-light* applies the light color theme + regardless of which color theme is currently active. *color-theme-toggle* toggles between the primary and alternative color themes. diff --git a/doc/footclient.1.scd b/doc/footclient.1.scd index edf3e9f3..ad865913 100644 --- a/doc/footclient.1.scd +++ b/doc/footclient.1.scd @@ -198,8 +198,8 @@ variables to unset may be defined in *foot.ini*(5). The following signals have special meaning in footclient: -- SIGUSR1: switch to color theme 1 (i.e. use the *[colors]* section). -- SIGUSR2: switch to color theme 2 (i.e. use the *[colors2]* section). +- SIGUSR1: switch to the dark color theme (*[colors-dark]*). +- SIGUSR2: switch to the light color theme (*[colors-light]*). When sending SIGUSR1/SIGUSR2 to a footclient instance, the theme is changed in that instance only. This is different from when you send diff --git a/foot.ini b/foot.ini index 2d170489..a9b4b83d 100644 --- a/foot.ini +++ b/foot.ini @@ -24,7 +24,7 @@ # dpi-aware=no # gamma-correct-blending=no -# initial-color-theme=1 +# initial-color-theme=dark # initial-window-size-pixels=700x500 # Or, # initial-window-size-chars= # initial-window-mode=windowed @@ -101,7 +101,7 @@ [touch] # long-press-delay=400 -[colors] +[colors-dark] # alpha=1.0 # alpha-mode=default # Can be `default`, `matching` or `all` # background=242424 @@ -169,7 +169,7 @@ # search-box-match= # black-on-yellow # urls= -[colors2] +[colors-light] # Alternative color theme, see man page foot.ini(5) # Same builtin defaults as [color], except for: # dim-blend-towards=white diff --git a/input.c b/input.c index 44a99e3b..80b028ac 100644 --- a/input.c +++ b/input.c @@ -486,11 +486,13 @@ execute_binding(struct seat *seat, struct terminal *term, return true; case BIND_ACTION_THEME_SWITCH_1: - term_theme_switch_to_1(term); + case BIND_ACTION_THEME_SWITCH_DARK: + term_theme_switch_to_dark(term); return true; case BIND_ACTION_THEME_SWITCH_2: - term_theme_switch_to_2(term); + case BIND_ACTION_THEME_SWITCH_LIGHT: + term_theme_switch_to_light(term); return true; case BIND_ACTION_THEME_TOGGLE: diff --git a/key-binding.h b/key-binding.h index 5f0c1f1e..c4a04e99 100644 --- a/key-binding.h +++ b/key-binding.h @@ -45,6 +45,8 @@ enum bind_action_normal { BIND_ACTION_REGEX_COPY, BIND_ACTION_THEME_SWITCH_1, BIND_ACTION_THEME_SWITCH_2, + BIND_ACTION_THEME_SWITCH_DARK, + BIND_ACTION_THEME_SWITCH_LIGHT, BIND_ACTION_THEME_TOGGLE, /* Mouse specific actions - i.e. they require a mouse coordinate */ diff --git a/main.c b/main.c index b933e1c1..9db77d0c 100644 --- a/main.c +++ b/main.c @@ -59,14 +59,14 @@ fdm_sigusr(struct fdm *fdm, int signo, void *data) if (ctx->server != NULL) { if (signo == SIGUSR1) - server_global_theme_switch_to_1(ctx->server); + server_global_theme_switch_to_dark(ctx->server); else - server_global_theme_switch_to_2(ctx->server); + server_global_theme_switch_to_light(ctx->server); } else { if (signo == SIGUSR1) - term_theme_switch_to_1(ctx->term); + term_theme_switch_to_dark(ctx->term); else - term_theme_switch_to_2(ctx->term); + term_theme_switch_to_light(ctx->term); } return true; diff --git a/osc.c b/osc.c index 375eae5c..9407e7b8 100644 --- a/osc.c +++ b/osc.c @@ -1459,9 +1459,9 @@ osc_dispatch(struct terminal *term) case 11: term->colors.bg = color; if (!have_alpha) { - alpha = term->colors.active_theme == COLOR_THEME1 - ? term->conf->colors.alpha - : term->conf->colors2.alpha; + alpha = term->colors.active_theme == COLOR_THEME_DARK + ? term->conf->colors_dark.alpha + : term->conf->colors_light.alpha; } const bool changed = term->colors.alpha != alpha; @@ -1516,9 +1516,9 @@ osc_dispatch(struct terminal *term) /* Reset Color Number 'c' (whole table if no parameter) */ const struct color_theme *theme = - term->colors.active_theme == COLOR_THEME1 - ? &term->conf->colors - : &term->conf->colors2; + term->colors.active_theme == COLOR_THEME_DARK + ? &term->conf->colors_dark + : &term->conf->colors_light; if (string[0] == '\0') { LOG_DBG("resetting all colors"); @@ -1559,9 +1559,9 @@ osc_dispatch(struct terminal *term) LOG_DBG("resetting foreground color"); const struct color_theme *theme = - term->colors.active_theme == COLOR_THEME1 - ? &term->conf->colors - : &term->conf->colors2; + term->colors.active_theme == COLOR_THEME_DARK + ? &term->conf->colors_dark + : &term->conf->colors_light; term->colors.fg = theme->fg; term_damage_color(term, COLOR_DEFAULT, 0); @@ -1571,9 +1571,9 @@ osc_dispatch(struct terminal *term) LOG_DBG("resetting background color"); const struct color_theme *theme = - term->colors.active_theme == COLOR_THEME1 - ? &term->conf->colors - : &term->conf->colors2; + term->colors.active_theme == COLOR_THEME_DARK + ? &term->conf->colors_dark + : &term->conf->colors_light; bool alpha_changed = term->colors.alpha != theme->alpha; @@ -1594,14 +1594,14 @@ osc_dispatch(struct terminal *term) LOG_DBG("resetting cursor color"); const struct color_theme *theme = - term->colors.active_theme == COLOR_THEME1 - ? &term->conf->colors - : &term->conf->colors2; + term->colors.active_theme == COLOR_THEME_DARK + ? &term->conf->colors_dark + : &term->conf->colors_light; term->colors.cursor_fg = theme->cursor.text; term->colors.cursor_bg = theme->cursor.cursor; - if (term->conf->colors.use_custom.cursor) { + if (term->conf->colors_dark.use_custom.cursor) { term->colors.cursor_fg |= 1u << 31; term->colors.cursor_bg |= 1u << 31; } @@ -1614,9 +1614,9 @@ osc_dispatch(struct terminal *term) LOG_DBG("resetting selection background color"); const struct color_theme *theme = - term->colors.active_theme == COLOR_THEME1 - ? &term->conf->colors - : &term->conf->colors2; + term->colors.active_theme == COLOR_THEME_DARK + ? &term->conf->colors_dark + : &term->conf->colors_light; term->colors.selection_bg = theme->selection_bg; break; @@ -1626,9 +1626,9 @@ osc_dispatch(struct terminal *term) LOG_DBG("resetting selection foreground color"); const struct color_theme *theme = - term->colors.active_theme == COLOR_THEME1 - ? &term->conf->colors - : &term->conf->colors2; + term->colors.active_theme == COLOR_THEME_DARK + ? &term->conf->colors_dark + : &term->conf->colors_light; term->colors.selection_fg = theme->selection_fg; break; diff --git a/render.c b/render.c index 1d0f08af..ac8ece37 100644 --- a/render.c +++ b/render.c @@ -293,7 +293,7 @@ static inline uint32_t color_dim(const struct terminal *term, uint32_t color) { const struct config *conf = term->conf; - const uint8_t custom_dim = conf->colors.use_custom.dim; + const uint8_t custom_dim = conf->colors_dark.use_custom.dim; if (unlikely(custom_dim != 0)) { for (size_t i = 0; i < 8; i++) { @@ -302,7 +302,7 @@ color_dim(const struct terminal *term, uint32_t color) if (term->colors.table[0 + i] == color) { /* "Regular" color, return the corresponding "dim" */ - return conf->colors.dim[i]; + return conf->colors_dark.dim[i]; } else if (term->colors.table[8 + i] == color) { @@ -312,9 +312,9 @@ color_dim(const struct terminal *term, uint32_t color) } } - const struct color_theme *theme = term->colors.active_theme == COLOR_THEME1 - ? &conf->colors - : &conf->colors2; + const struct color_theme *theme = term->colors.active_theme == COLOR_THEME_DARK + ? &conf->colors_dark + : &conf->colors_light; return color_blend_towards( color, @@ -776,7 +776,7 @@ render_cell(struct terminal *term, pixman_image_t *pix, } else if (!term->window->is_fullscreen && term->colors.alpha != 0xffff) { - switch (term->conf->colors.alpha_mode) { + switch (term->conf->colors_dark.alpha_mode) { case ALPHA_MODE_DEFAULT: { if (cell->attrs.bg_src == COLOR_DEFAULT) { alpha = term->colors.alpha; @@ -1175,8 +1175,8 @@ render_cell(struct terminal *term, pixman_image_t *pix, if (unlikely(cell->attrs.url)) { pixman_color_t url_color = color_hex_to_pixman( - term->conf->colors.use_custom.url - ? term->conf->colors.url + term->conf->colors_dark.use_custom.url + ? term->conf->colors_dark.url : term->colors.table[3], gamma_correct); draw_underline(term, pix, font, &url_color, x, y, cell_cols); @@ -1991,8 +1991,8 @@ render_overlay(struct terminal *term) case OVERLAY_FLASH: color = color_hex_to_pixman_with_alpha( - term->conf->colors.flash, - term->conf->colors.flash_alpha, + term->conf->colors_dark.flash, + term->conf->colors_dark.flash_alpha, wayl_do_linear_blending(term->wl, term->conf)); break; @@ -2510,10 +2510,10 @@ render_csd_title(struct terminal *term, const struct csd_data *info, uint32_t bg = term->conf->csd.color.title_set ? term->conf->csd.color.title - : 0xffu << 24 | term->conf->colors.fg; + : 0xffu << 24 | term->conf->colors_dark.fg; uint32_t fg = term->conf->csd.color.buttons_set ? term->conf->csd.color.buttons - : term->conf->colors.bg; + : term->conf->colors_dark.bg; if (!term->visual_focus) { bg = color_dim(term, bg); @@ -2607,7 +2607,7 @@ render_csd_border(struct terminal *term, enum csd_surface surf_idx, uint32_t _color = conf->csd.color.border_set ? conf->csd.color.border : conf->csd.color.title_set ? conf->csd.color.title : - 0xffu << 24 | term->conf->colors.fg; + 0xffu << 24 | term->conf->colors_dark.fg; if (!term->visual_focus) _color = color_dim(term, _color); @@ -2627,7 +2627,7 @@ static pixman_color_t get_csd_button_fg_color(const struct terminal *term) { const struct config *conf = term->conf; - uint32_t _color = conf->colors.bg; + uint32_t _color = conf->colors_dark.bg; uint16_t alpha = 0xffff; if (conf->csd.color.buttons_set) { @@ -2872,7 +2872,7 @@ render_csd_button(struct terminal *term, enum csd_surface surf_idx, switch (surf_idx) { case CSD_SURF_MINIMIZE: - _color = term->conf->colors.table[4]; /* blue */ + _color = term->conf->colors_dark.table[4]; /* blue */ is_set = term->conf->csd.color.minimize_set; conf_color = &term->conf->csd.color.minimize; is_active = term->active_surface == TERM_SURF_BUTTON_MINIMIZE && @@ -2880,7 +2880,7 @@ render_csd_button(struct terminal *term, enum csd_surface surf_idx, break; case CSD_SURF_MAXIMIZE: - _color = term->conf->colors.table[2]; /* green */ + _color = term->conf->colors_dark.table[2]; /* green */ is_set = term->conf->csd.color.maximize_set; conf_color = &term->conf->csd.color.maximize; is_active = term->active_surface == TERM_SURF_BUTTON_MAXIMIZE && @@ -2888,7 +2888,7 @@ render_csd_button(struct terminal *term, enum csd_surface surf_idx, break; case CSD_SURF_CLOSE: - _color = term->conf->colors.table[1]; /* red */ + _color = term->conf->colors_dark.table[1]; /* red */ is_set = term->conf->csd.color.close_set; conf_color = &term->conf->csd.color.quit; is_active = term->active_surface == TERM_SURF_BUTTON_CLOSE && @@ -3117,9 +3117,9 @@ render_scrollback_position(struct terminal *term) uint32_t fg = term->colors.table[0]; uint32_t bg = term->colors.table[8 + 4]; - if (term->conf->colors.use_custom.scrollback_indicator) { - fg = term->conf->colors.scrollback_indicator.fg; - bg = term->conf->colors.scrollback_indicator.bg; + if (term->conf->colors_dark.use_custom.scrollback_indicator) { + fg = term->conf->colors_dark.scrollback_indicator.fg; + bg = term->conf->colors_dark.scrollback_indicator.bg; } render_osd( @@ -3799,18 +3799,18 @@ render_search_box(struct terminal *term) const bool is_match = term->search.match_len == text_len; const bool custom_colors = is_match - ? term->conf->colors.use_custom.search_box_match - : term->conf->colors.use_custom.search_box_no_match; + ? term->conf->colors_dark.use_custom.search_box_match + : term->conf->colors_dark.use_custom.search_box_no_match; /* Background - yellow on empty/match, red on mismatch (default) */ const bool gamma_correct = wayl_do_linear_blending(term->wl, term->conf); const pixman_color_t color = color_hex_to_pixman( is_match ? (custom_colors - ? term->conf->colors.search_box.match.bg + ? term->conf->colors_dark.search_box.match.bg : term->colors.table[3]) : (custom_colors - ? term->conf->colors.search_box.no_match.bg + ? term->conf->colors_dark.search_box.no_match.bg : term->colors.table[1]), gamma_correct); @@ -3832,8 +3832,8 @@ render_search_box(struct terminal *term) pixman_color_t fg = color_hex_to_pixman( custom_colors ? (is_match - ? term->conf->colors.search_box.match.fg - : term->conf->colors.search_box.no_match.fg) + ? term->conf->colors_dark.search_box.match.fg + : term->conf->colors_dark.search_box.no_match.fg) : term->colors.table[0], gamma_correct); @@ -4254,11 +4254,11 @@ render_urls(struct terminal *term) struct buffer *bufs[render_count]; shm_get_many(chain, render_count, widths, heights, bufs, false); - uint32_t fg = term->conf->colors.use_custom.jump_label - ? term->conf->colors.jump_label.fg + uint32_t fg = term->conf->colors_dark.use_custom.jump_label + ? term->conf->colors_dark.jump_label.fg : term->colors.table[0]; - uint32_t bg = term->conf->colors.use_custom.jump_label - ? term->conf->colors.jump_label.bg + uint32_t bg = term->conf->colors_dark.use_custom.jump_label + ? term->conf->colors_dark.jump_label.bg : term->colors.table[3]; for (size_t i = 0; i < render_count; i++) { diff --git a/server.c b/server.c index 6b3e5094..25963325 100644 --- a/server.c +++ b/server.c @@ -182,11 +182,11 @@ fdm_client(struct fdm *fdm, int fd, int events, void *data) switch (sigusr.signo) { case SIGUSR1: - term_theme_switch_to_1(client->instance->terminal); + term_theme_switch_to_dark(client->instance->terminal); break; case SIGUSR2: - term_theme_switch_to_2(client->instance->terminal); + term_theme_switch_to_light(client->instance->terminal); break; default: @@ -670,21 +670,21 @@ server_destroy(struct server *server) } void -server_global_theme_switch_to_1(struct server *server) +server_global_theme_switch_to_dark(struct server *server) { - server->conf->initial_color_theme = COLOR_THEME1; + server->conf->initial_color_theme = COLOR_THEME_DARK; tll_foreach(server->clients, it) - term_theme_switch_to_1(it->item->instance->terminal); + term_theme_switch_to_dark(it->item->instance->terminal); tll_foreach(server->terminals, it) - term_theme_switch_to_1(it->item->terminal); + term_theme_switch_to_dark(it->item->terminal); } void -server_global_theme_switch_to_2(struct server *server) +server_global_theme_switch_to_light(struct server *server) { - server->conf->initial_color_theme = COLOR_THEME2; + server->conf->initial_color_theme = COLOR_THEME_LIGHT; tll_foreach(server->clients, it) - term_theme_switch_to_2(it->item->instance->terminal); + term_theme_switch_to_light(it->item->instance->terminal); tll_foreach(server->terminals, it) - term_theme_switch_to_2(it->item->terminal); + term_theme_switch_to_light(it->item->terminal); } diff --git a/server.h b/server.h index 6adfe7c6..683ad74d 100644 --- a/server.h +++ b/server.h @@ -10,5 +10,5 @@ struct server *server_init(struct config *conf, struct fdm *fdm, struct reaper *reaper, struct wayland *wayl); void server_destroy(struct server *server); -void server_global_theme_switch_to_1(struct server *server); -void server_global_theme_switch_to_2(struct server *server); +void server_global_theme_switch_to_dark(struct server *server); +void server_global_theme_switch_to_light(struct server *server); diff --git a/sixel.c b/sixel.c index c5ef01a1..07b97f46 100644 --- a/sixel.c +++ b/sixel.c @@ -137,7 +137,7 @@ sixel_init(struct terminal *term, int p1, int p2, int p3) } const size_t active_palette_entries = min( - ALEN(term->conf->colors.sixel), term->sixel.palette_size); + ALEN(term->conf->colors_dark.sixel), term->sixel.palette_size); if (term->sixel.use_private_palette) { xassert(term->sixel.private_palette == NULL); @@ -145,7 +145,7 @@ sixel_init(struct terminal *term, int p1, int p2, int p3) term->sixel.palette_size, sizeof(term->sixel.private_palette[0])); memcpy( - term->sixel.private_palette, term->conf->colors.sixel, + term->sixel.private_palette, term->conf->colors_dark.sixel, active_palette_entries * sizeof(term->sixel.private_palette[0])); if (term->sixel.linear_blending || term->sixel.use_10bit) { @@ -164,7 +164,7 @@ sixel_init(struct terminal *term, int p1, int p2, int p3) term->sixel.palette_size, sizeof(term->sixel.shared_palette[0])); memcpy( - term->sixel.shared_palette, term->conf->colors.sixel, + term->sixel.shared_palette, term->conf->colors_dark.sixel, active_palette_entries * sizeof(term->sixel.shared_palette[0])); if (term->sixel.linear_blending || term->sixel.use_10bit) { diff --git a/terminal.c b/terminal.c index 3749416b..b670d606 100644 --- a/terminal.c +++ b/terminal.c @@ -1271,8 +1271,10 @@ term_init(const struct config *conf, struct fdm *fdm, struct reaper *reaper, const struct color_theme *theme = NULL; switch (conf->initial_color_theme) { - case COLOR_THEME1: theme = &conf->colors; break; - case COLOR_THEME2: theme = &conf->colors2; break; + case COLOR_THEME_DARK: theme = &conf->colors_dark; break; + case COLOR_THEME_LIGHT: theme = &conf->colors_light; break; + case COLOR_THEME_1: BUG("COLOR_THEME_1 should not be used"); break; + case COLOR_THEME_2: BUG("COLOR_THEME_2 should not be used"); break; } /* Initialize configure-based terminal attributes */ @@ -2177,8 +2179,10 @@ term_reset(struct terminal *term, bool hard) const struct color_theme *theme = NULL; switch (term->conf->initial_color_theme) { - case COLOR_THEME1: theme = &term->conf->colors; break; - case COLOR_THEME2: theme = &term->conf->colors2; break; + case COLOR_THEME_DARK: theme = &term->conf->colors_dark; break; + case COLOR_THEME_LIGHT: theme = &term->conf->colors_light; break; + case COLOR_THEME_1: BUG("COLOR_THEME_1 should not be used"); break; + case COLOR_THEME_2: BUG("COLOR_THEME_2 should not be used"); break; } term->flash.active = false; @@ -4742,13 +4746,13 @@ term_send_size_notification(struct terminal *term) } void -term_theme_switch_to_1(struct terminal *term) +term_theme_switch_to_dark(struct terminal *term) { - if (term->colors.active_theme == COLOR_THEME1) + if (term->colors.active_theme == COLOR_THEME_DARK) return; - term_theme_apply(term, &term->conf->colors); - term->colors.active_theme = COLOR_THEME1; + term_theme_apply(term, &term->conf->colors_dark); + term->colors.active_theme = COLOR_THEME_DARK; wayl_win_alpha_changed(term->window); term_font_subpixel_changed(term); @@ -4762,13 +4766,13 @@ term_theme_switch_to_1(struct terminal *term) } void -term_theme_switch_to_2(struct terminal *term) +term_theme_switch_to_light(struct terminal *term) { - if (term->colors.active_theme == COLOR_THEME2) + if (term->colors.active_theme == COLOR_THEME_LIGHT) return; - term_theme_apply(term, &term->conf->colors2); - term->colors.active_theme = COLOR_THEME2; + term_theme_apply(term, &term->conf->colors_light); + term->colors.active_theme = COLOR_THEME_LIGHT; wayl_win_alpha_changed(term->window); term_font_subpixel_changed(term); @@ -4784,15 +4788,15 @@ term_theme_switch_to_2(struct terminal *term) void term_theme_toggle(struct terminal *term) { - if (term->colors.active_theme == COLOR_THEME1) { - term_theme_apply(term, &term->conf->colors2); - term->colors.active_theme = COLOR_THEME2; + if (term->colors.active_theme == COLOR_THEME_DARK) { + term_theme_apply(term, &term->conf->colors_light); + term->colors.active_theme = COLOR_THEME_LIGHT; if (term->report_theme_changes) term_to_slave(term, "\033[?997;2n", 9); } else { - term_theme_apply(term, &term->conf->colors); - term->colors.active_theme = COLOR_THEME1; + term_theme_apply(term, &term->conf->colors_dark); + term->colors.active_theme = COLOR_THEME_DARK; if (term->report_theme_changes) term_to_slave(term, "\033[?997;1n", 9); diff --git a/terminal.h b/terminal.h index 364d57b3..fe39341d 100644 --- a/terminal.h +++ b/terminal.h @@ -994,8 +994,8 @@ void term_enable_size_notifications(struct terminal *term); void term_disable_size_notifications(struct terminal *term); void term_send_size_notification(struct terminal *term); -void term_theme_switch_to_1(struct terminal *term); -void term_theme_switch_to_2(struct terminal *term); +void term_theme_switch_to_dark(struct terminal *term); +void term_theme_switch_to_light(struct terminal *term); void term_theme_toggle(struct terminal *term); static inline void term_reset_grapheme_state(struct terminal *term) diff --git a/tests/test-config.c b/tests/test-config.c index 268733db..f83a9beb 100644 --- a/tests/test-config.c +++ b/tests/test-config.c @@ -521,6 +521,14 @@ test_section_main(void) (int []){STARTUP_WINDOWED, STARTUP_MAXIMIZED, STARTUP_FULLSCREEN}, (int *)&conf.startup_mode); + test_enum( + &ctx, &parse_section_main, "initial-color-theme", + 2, + (const char *[]){"dark", "light", "1", "2"}, + (int []){COLOR_THEME_DARK, COLOR_THEME_LIGHT, + COLOR_THEME_DARK, COLOR_THEME_LIGHT}, + (int *)&conf.initial_color_theme); + /* TODO: font (custom) */ /* TODO: include (custom) */ /* TODO: bold-text-in-bright (enum/boolean) */ @@ -695,78 +703,157 @@ test_section_touch(void) } static void -test_section_colors(void) +test_section_colors_dark(void) { struct config conf = {0}; struct context ctx = { - .conf = &conf, .section = "colors", .path = "unittest"}; + .conf = &conf, .section = "colors-dark", .path = "unittest"}; test_invalid_key(&ctx, &parse_section_colors, "invalid-key"); - test_color(&ctx, &parse_section_colors, "foreground", false, &conf.colors.fg); - test_color(&ctx, &parse_section_colors, "background", false, &conf.colors.bg); - test_color(&ctx, &parse_section_colors, "regular0", false, &conf.colors.table[0]); - test_color(&ctx, &parse_section_colors, "regular1", false, &conf.colors.table[1]); - test_color(&ctx, &parse_section_colors, "regular2", false, &conf.colors.table[2]); - test_color(&ctx, &parse_section_colors, "regular3", false, &conf.colors.table[3]); - test_color(&ctx, &parse_section_colors, "regular4", false, &conf.colors.table[4]); - test_color(&ctx, &parse_section_colors, "regular5", false, &conf.colors.table[5]); - test_color(&ctx, &parse_section_colors, "regular6", false, &conf.colors.table[6]); - test_color(&ctx, &parse_section_colors, "regular7", false, &conf.colors.table[7]); - test_color(&ctx, &parse_section_colors, "bright0", false, &conf.colors.table[8]); - test_color(&ctx, &parse_section_colors, "bright1", false, &conf.colors.table[9]); - test_color(&ctx, &parse_section_colors, "bright2", false, &conf.colors.table[10]); - test_color(&ctx, &parse_section_colors, "bright3", false, &conf.colors.table[11]); - test_color(&ctx, &parse_section_colors, "bright4", false, &conf.colors.table[12]); - test_color(&ctx, &parse_section_colors, "bright5", false, &conf.colors.table[13]); - test_color(&ctx, &parse_section_colors, "bright6", false, &conf.colors.table[14]); - test_color(&ctx, &parse_section_colors, "bright7", false, &conf.colors.table[15]); - test_color(&ctx, &parse_section_colors, "dim0", false, &conf.colors.dim[0]); - test_color(&ctx, &parse_section_colors, "dim1", false, &conf.colors.dim[1]); - test_color(&ctx, &parse_section_colors, "dim2", false, &conf.colors.dim[2]); - test_color(&ctx, &parse_section_colors, "dim3", false, &conf.colors.dim[3]); - test_color(&ctx, &parse_section_colors, "dim4", false, &conf.colors.dim[4]); - test_color(&ctx, &parse_section_colors, "dim5", false, &conf.colors.dim[5]); - test_color(&ctx, &parse_section_colors, "dim6", false, &conf.colors.dim[6]); - test_color(&ctx, &parse_section_colors, "dim7", false, &conf.colors.dim[7]); - test_color(&ctx, &parse_section_colors, "selection-foreground", false, &conf.colors.selection_fg); - test_color(&ctx, &parse_section_colors, "selection-background", false, &conf.colors.selection_bg); - test_color(&ctx, &parse_section_colors, "urls", false, &conf.colors.url); - test_two_colors(&ctx, &parse_section_colors, "jump-labels", false, - &conf.colors.jump_label.fg, - &conf.colors.jump_label.bg); - test_two_colors(&ctx, &parse_section_colors, "scrollback-indicator", false, - &conf.colors.scrollback_indicator.fg, - &conf.colors.scrollback_indicator.bg); - test_two_colors(&ctx, &parse_section_colors, "search-box-no-match", false, - &conf.colors.search_box.no_match.fg, - &conf.colors.search_box.no_match.bg); - test_two_colors(&ctx, &parse_section_colors, "search-box-match", false, - &conf.colors.search_box.match.fg, - &conf.colors.search_box.match.bg); + test_color(&ctx, &parse_section_colors_dark, "foreground", false, &conf.colors_dark.fg); + test_color(&ctx, &parse_section_colors_dark, "background", false, &conf.colors_dark.bg); + test_color(&ctx, &parse_section_colors_dark, "regular0", false, &conf.colors_dark.table[0]); + test_color(&ctx, &parse_section_colors_dark, "regular1", false, &conf.colors_dark.table[1]); + test_color(&ctx, &parse_section_colors_dark, "regular2", false, &conf.colors_dark.table[2]); + test_color(&ctx, &parse_section_colors_dark, "regular3", false, &conf.colors_dark.table[3]); + test_color(&ctx, &parse_section_colors_dark, "regular4", false, &conf.colors_dark.table[4]); + test_color(&ctx, &parse_section_colors_dark, "regular5", false, &conf.colors_dark.table[5]); + test_color(&ctx, &parse_section_colors_dark, "regular6", false, &conf.colors_dark.table[6]); + test_color(&ctx, &parse_section_colors_dark, "regular7", false, &conf.colors_dark.table[7]); + test_color(&ctx, &parse_section_colors_dark, "bright0", false, &conf.colors_dark.table[8]); + test_color(&ctx, &parse_section_colors_dark, "bright1", false, &conf.colors_dark.table[9]); + test_color(&ctx, &parse_section_colors_dark, "bright2", false, &conf.colors_dark.table[10]); + test_color(&ctx, &parse_section_colors_dark, "bright3", false, &conf.colors_dark.table[11]); + test_color(&ctx, &parse_section_colors_dark, "bright4", false, &conf.colors_dark.table[12]); + test_color(&ctx, &parse_section_colors_dark, "bright5", false, &conf.colors_dark.table[13]); + test_color(&ctx, &parse_section_colors_dark, "bright6", false, &conf.colors_dark.table[14]); + test_color(&ctx, &parse_section_colors_dark, "bright7", false, &conf.colors_dark.table[15]); + test_color(&ctx, &parse_section_colors_dark, "dim0", false, &conf.colors_dark.dim[0]); + test_color(&ctx, &parse_section_colors_dark, "dim1", false, &conf.colors_dark.dim[1]); + test_color(&ctx, &parse_section_colors_dark, "dim2", false, &conf.colors_dark.dim[2]); + test_color(&ctx, &parse_section_colors_dark, "dim3", false, &conf.colors_dark.dim[3]); + test_color(&ctx, &parse_section_colors_dark, "dim4", false, &conf.colors_dark.dim[4]); + test_color(&ctx, &parse_section_colors_dark, "dim5", false, &conf.colors_dark.dim[5]); + test_color(&ctx, &parse_section_colors_dark, "dim6", false, &conf.colors_dark.dim[6]); + test_color(&ctx, &parse_section_colors_dark, "dim7", false, &conf.colors_dark.dim[7]); + test_color(&ctx, &parse_section_colors_dark, "selection-foreground", false, &conf.colors_dark.selection_fg); + test_color(&ctx, &parse_section_colors_dark, "selection-background", false, &conf.colors_dark.selection_bg); + test_color(&ctx, &parse_section_colors_dark, "urls", false, &conf.colors_dark.url); + test_two_colors(&ctx, &parse_section_colors_dark, "jump-labels", false, + &conf.colors_dark.jump_label.fg, + &conf.colors_dark.jump_label.bg); + test_two_colors(&ctx, &parse_section_colors_dark, "scrollback-indicator", false, + &conf.colors_dark.scrollback_indicator.fg, + &conf.colors_dark.scrollback_indicator.bg); + test_two_colors(&ctx, &parse_section_colors_dark, "search-box-no-match", false, + &conf.colors_dark.search_box.no_match.fg, + &conf.colors_dark.search_box.no_match.bg); + test_two_colors(&ctx, &parse_section_colors_dark, "search-box-match", false, + &conf.colors_dark.search_box.match.fg, + &conf.colors_dark.search_box.match.bg); - test_two_colors(&ctx, &parse_section_colors, "cursor", false, - &conf.colors.cursor.text, - &conf.colors.cursor.cursor); + test_two_colors(&ctx, &parse_section_colors_dark, "cursor", false, + &conf.colors_dark.cursor.text, + &conf.colors_dark.cursor.cursor); - test_enum(&ctx, &parse_section_colors, "alpha-mode", 3, + test_enum(&ctx, &parse_section_colors_dark, "alpha-mode", 3, (const char *[]){"default", "matching", "all"}, (int []){ALPHA_MODE_DEFAULT, ALPHA_MODE_MATCHING, ALPHA_MODE_ALL}, - (int *)&conf.colors.alpha_mode); + (int *)&conf.colors_dark.alpha_mode); - test_enum(&ctx, &parse_section_colors, "dim-blend-towards", 2, + test_enum(&ctx, &parse_section_colors_dark, "dim-blend-towards", 2, (const char *[]){"black", "white"}, (int []){DIM_BLEND_TOWARDS_BLACK, DIM_BLEND_TOWARDS_WHITE}, - (int *)&conf.colors.dim_blend_towards); + (int *)&conf.colors_dark.dim_blend_towards); for (size_t i = 0; i < 255; i++) { char key_name[4]; sprintf(key_name, "%zu", i); - test_color(&ctx, &parse_section_colors, key_name, false, - &conf.colors.table[i]); + test_color(&ctx, &parse_section_colors_dark, key_name, false, + &conf.colors_dark.table[i]); } - test_invalid_key(&ctx, &parse_section_colors, "256"); + test_invalid_key(&ctx, &parse_section_colors_dark, "256"); + + /* TODO: alpha (float in range 0-1, converted to uint16_t) */ + + config_free(&conf); +} + +static void +test_section_colors_light(void) +{ + struct config conf = {0}; + struct context ctx = { + .conf = &conf, .section = "colors-light", .path = "unittest"}; + + test_invalid_key(&ctx, &parse_section_colors, "invalid-key"); + + test_color(&ctx, &parse_section_colors_light, "foreground", false, &conf.colors_light.fg); + test_color(&ctx, &parse_section_colors_light, "background", false, &conf.colors_light.bg); + test_color(&ctx, &parse_section_colors_light, "regular0", false, &conf.colors_light.table[0]); + test_color(&ctx, &parse_section_colors_light, "regular1", false, &conf.colors_light.table[1]); + test_color(&ctx, &parse_section_colors_light, "regular2", false, &conf.colors_light.table[2]); + test_color(&ctx, &parse_section_colors_light, "regular3", false, &conf.colors_light.table[3]); + test_color(&ctx, &parse_section_colors_light, "regular4", false, &conf.colors_light.table[4]); + test_color(&ctx, &parse_section_colors_light, "regular5", false, &conf.colors_light.table[5]); + test_color(&ctx, &parse_section_colors_light, "regular6", false, &conf.colors_light.table[6]); + test_color(&ctx, &parse_section_colors_light, "regular7", false, &conf.colors_light.table[7]); + test_color(&ctx, &parse_section_colors_light, "bright0", false, &conf.colors_light.table[8]); + test_color(&ctx, &parse_section_colors_light, "bright1", false, &conf.colors_light.table[9]); + test_color(&ctx, &parse_section_colors_light, "bright2", false, &conf.colors_light.table[10]); + test_color(&ctx, &parse_section_colors_light, "bright3", false, &conf.colors_light.table[11]); + test_color(&ctx, &parse_section_colors_light, "bright4", false, &conf.colors_light.table[12]); + test_color(&ctx, &parse_section_colors_light, "bright5", false, &conf.colors_light.table[13]); + test_color(&ctx, &parse_section_colors_light, "bright6", false, &conf.colors_light.table[14]); + test_color(&ctx, &parse_section_colors_light, "bright7", false, &conf.colors_light.table[15]); + test_color(&ctx, &parse_section_colors_light, "dim0", false, &conf.colors_light.dim[0]); + test_color(&ctx, &parse_section_colors_light, "dim1", false, &conf.colors_light.dim[1]); + test_color(&ctx, &parse_section_colors_light, "dim2", false, &conf.colors_light.dim[2]); + test_color(&ctx, &parse_section_colors_light, "dim3", false, &conf.colors_light.dim[3]); + test_color(&ctx, &parse_section_colors_light, "dim4", false, &conf.colors_light.dim[4]); + test_color(&ctx, &parse_section_colors_light, "dim5", false, &conf.colors_light.dim[5]); + test_color(&ctx, &parse_section_colors_light, "dim6", false, &conf.colors_light.dim[6]); + test_color(&ctx, &parse_section_colors_light, "dim7", false, &conf.colors_light.dim[7]); + test_color(&ctx, &parse_section_colors_light, "selection-foreground", false, &conf.colors_light.selection_fg); + test_color(&ctx, &parse_section_colors_light, "selection-background", false, &conf.colors_light.selection_bg); + test_color(&ctx, &parse_section_colors_light, "urls", false, &conf.colors_light.url); + test_two_colors(&ctx, &parse_section_colors_light, "jump-labels", false, + &conf.colors_light.jump_label.fg, + &conf.colors_light.jump_label.bg); + test_two_colors(&ctx, &parse_section_colors_light, "scrollback-indicator", false, + &conf.colors_light.scrollback_indicator.fg, + &conf.colors_light.scrollback_indicator.bg); + test_two_colors(&ctx, &parse_section_colors_light, "search-box-no-match", false, + &conf.colors_light.search_box.no_match.fg, + &conf.colors_light.search_box.no_match.bg); + test_two_colors(&ctx, &parse_section_colors_light, "search-box-match", false, + &conf.colors_light.search_box.match.fg, + &conf.colors_light.search_box.match.bg); + + test_two_colors(&ctx, &parse_section_colors_light, "cursor", false, + &conf.colors_light.cursor.text, + &conf.colors_light.cursor.cursor); + + test_enum(&ctx, &parse_section_colors_light, "alpha-mode", 3, + (const char *[]){"default", "matching", "all"}, + (int []){ALPHA_MODE_DEFAULT, ALPHA_MODE_MATCHING, ALPHA_MODE_ALL}, + (int *)&conf.colors_light.alpha_mode); + + test_enum(&ctx, &parse_section_colors_light, "dim-blend-towards", 2, + (const char *[]){"black", "white"}, + (int []){DIM_BLEND_TOWARDS_BLACK, DIM_BLEND_TOWARDS_WHITE}, + (int *)&conf.colors_light.dim_blend_towards); + + for (size_t i = 0; i < 255; i++) { + char key_name[4]; + sprintf(key_name, "%zu", i); + test_color(&ctx, &parse_section_colors_light, key_name, false, + &conf.colors_light.table[i]); + } + + test_invalid_key(&ctx, &parse_section_colors_light, "256"); /* TODO: alpha (float in range 0-1, converted to uint16_t) */ @@ -1444,7 +1531,8 @@ main(int argc, const char *const *argv) test_section_cursor(); test_section_mouse(); test_section_touch(); - test_section_colors(); + test_section_colors_dark(); + test_section_colors_light(); test_section_csd(); test_section_key_bindings(); test_section_key_bindings_collisions(); diff --git a/themes/aeroroot b/themes/aeroroot index 2a0e0985..dbeb2e81 100644 --- a/themes/aeroroot +++ b/themes/aeroroot @@ -1,7 +1,7 @@ # -*- conf -*- # Aero root theme -[colors] +[colors-dark] cursor=1a1a1a 9fd5f5 foreground=dedeef background=1a1a1a diff --git a/themes/alacritty b/themes/alacritty index 14503887..68d1c68c 100644 --- a/themes/alacritty +++ b/themes/alacritty @@ -1,7 +1,7 @@ # -*- conf -*- # Alacritty -[colors] +[colors-dark] cursor = 181818 56d8c9 background= 181818 foreground= d8d8d8 diff --git a/themes/apprentice b/themes/apprentice index 6b67d21d..291ab8db 100644 --- a/themes/apprentice +++ b/themes/apprentice @@ -1,7 +1,7 @@ # -*- conf -*- # https://github.com/romainl/Apprentice -[colors] +[colors-dark] cursor=262626 6c6c6c foreground=bcbcbc background=262626 diff --git a/themes/ayu-mirage b/themes/ayu-mirage index 4646e418..2d9b6b54 100644 --- a/themes/ayu-mirage +++ b/themes/ayu-mirage @@ -2,7 +2,7 @@ # theme: Ayu Mirage # description: a theme based on Ayu Mirage for Sublime Text (original: https://github.com/dempfi/ayu) -[colors] +[colors-dark] cursor = ffcc66 665a44 foreground = cccac2 background = 242936 diff --git a/themes/catppuccin-frappe b/themes/catppuccin-frappe index 44bef16c..3acae600 100644 --- a/themes/catppuccin-frappe +++ b/themes/catppuccin-frappe @@ -1,7 +1,7 @@ # _*_ conf _*_ # Catppuccin Frappe -[colors] +[colors-dark] foreground=c6d0f5 background=303446 diff --git a/themes/catppuccin-latte b/themes/catppuccin-latte index d0b90e64..ca7a7aae 100644 --- a/themes/catppuccin-latte +++ b/themes/catppuccin-latte @@ -1,7 +1,10 @@ # _*_ conf _*_ # Catppuccin Latte -[colors] +[main] +initial-color-theme=light + +[colors-light] foreground=4c4f69 background=eff1f5 diff --git a/themes/catppuccin-macchiato b/themes/catppuccin-macchiato index ae8adab8..8f5ea36e 100644 --- a/themes/catppuccin-macchiato +++ b/themes/catppuccin-macchiato @@ -1,7 +1,7 @@ # _*_ conf _*_ # Catppuccin Macchiato -[colors] +[colors-dark] foreground=cad3f5 background=24273a diff --git a/themes/catppuccin-mocha b/themes/catppuccin-mocha index d29eb0ec..7d98dc0f 100644 --- a/themes/catppuccin-mocha +++ b/themes/catppuccin-mocha @@ -1,7 +1,7 @@ # _*_ conf _*_ # Catppuccin Mocha -[colors] +[colors-dark] foreground=cdd6f4 background=1e1e2e diff --git a/themes/chiba-dark b/themes/chiba-dark index 8727f684..ffaf6cb2 100644 --- a/themes/chiba-dark +++ b/themes/chiba-dark @@ -3,7 +3,7 @@ # author: ayushnix (https://sr.ht/~ayushnix) # description: A dark theme with bright cyberpunk colors (WCAG AAA compliant) -[colors] +[colors-dark] cursor = 181818 cdcdcd foreground = cdcdcd background = 181818 diff --git a/themes/derp b/themes/derp index 45eed752..42af3377 100644 --- a/themes/derp +++ b/themes/derp @@ -1,7 +1,7 @@ # -*- conf -*- # Derp -[colors] +[colors-dark] cursor=000000 ffffff foreground=ffffff background=000000 diff --git a/themes/deus b/themes/deus index 0d52e55b..69c44944 100644 --- a/themes/deus +++ b/themes/deus @@ -2,7 +2,7 @@ # Deus # Color palette based on: https://github.com/ajmwagar/vim-deus -[colors] +[colors-dark] cursor=2c323b eaeaea background=2c323b foreground=eaeaea diff --git a/themes/dracula b/themes/dracula index 008fc150..82994203 100644 --- a/themes/dracula +++ b/themes/dracula @@ -1,7 +1,7 @@ # -*- conf -*- # Dracula -[colors] +[colors-dark] cursor=282a36 f8f8f2 foreground=f8f8f2 background=282a36 diff --git a/themes/dracula-iterm b/themes/dracula-iterm index 249bb6ab..b75ddd9c 100644 --- a/themes/dracula-iterm +++ b/themes/dracula-iterm @@ -1,7 +1,7 @@ # -*- conf -*- # Dracula iTerm2 variant -[colors] +[colors-dark] cursor=ffffff bbbbbb foreground=f8f8f2 background=1e1f29 diff --git a/themes/electrophoretic b/themes/electrophoretic index e0bf6e79..8bc022ea 100644 --- a/themes/electrophoretic +++ b/themes/electrophoretic @@ -5,7 +5,10 @@ # text and the white background. # author: Eugen Rahaian -[colors] +[main] +initial-color-theme=light + +[colors-light] cursor=ffffff 515151 background= ffffff foreground= 000000 diff --git a/themes/gruvbox b/themes/gruvbox index 6bc97352..e44f3ea9 100644 --- a/themes/gruvbox +++ b/themes/gruvbox @@ -1,7 +1,7 @@ # -*- conf -*- # Gruvbox -[colors] +[colors-dark] background=282828 foreground=ebdbb2 regular0=282828 @@ -21,7 +21,7 @@ bright5=d3869b bright6=8ec07c bright7=ebdbb2 -[colors2] +[colors-light] background=fbf1c7 foreground=3c3836 regular0=fbf1c7 diff --git a/themes/gruvbox-dark b/themes/gruvbox-dark index 73207199..c5dadcc5 100644 --- a/themes/gruvbox-dark +++ b/themes/gruvbox-dark @@ -1,7 +1,7 @@ # -*- conf -*- # Gruvbox -[colors] +[colors-dark] background=282828 foreground=ebdbb2 regular0=282828 diff --git a/themes/gruvbox-light b/themes/gruvbox-light index 6a7a2416..6b616612 100644 --- a/themes/gruvbox-light +++ b/themes/gruvbox-light @@ -1,7 +1,10 @@ # -*- conf -*- # Gruvbox - Light -[colors] +[main] +initial-color-theme=light + +[colors-light] background=fbf1c7 foreground=3c3836 regular0=fbf1c7 diff --git a/themes/hacktober b/themes/hacktober index dfcc4c7e..ecdb18fb 100644 --- a/themes/hacktober +++ b/themes/hacktober @@ -1,6 +1,6 @@ # -*- conf -*- -[colors] +[colors-dark] cursor=141414 c9c9c9 foreground=c9c9c9 background=141414 diff --git a/themes/iterm b/themes/iterm index 45b1a0bf..c5ffc190 100644 --- a/themes/iterm +++ b/themes/iterm @@ -2,7 +2,7 @@ # this foot theme is based on alacritty iterm theme: # https://github.com/alacritty/alacritty-theme/blob/master/themes/iterm.toml -[colors] +[colors-dark] foreground=fffbf6 background=101421 diff --git a/themes/jetbrains-darcula b/themes/jetbrains-darcula index e6997848..0092b795 100644 --- a/themes/jetbrains-darcula +++ b/themes/jetbrains-darcula @@ -2,7 +2,7 @@ # JetBrains Darcula # Palette based on the same theme from https://github.com/dexpota/kitty-themes -[colors] +[colors-dark] cursor=202020 ffffff background=202020 foreground=adadad diff --git a/themes/kitty b/themes/kitty index f43eea9d..81fd003e 100644 --- a/themes/kitty +++ b/themes/kitty @@ -1,6 +1,6 @@ # -*- conf -*- -[colors] +[colors-dark] cursor=111111 cccccc foreground=dddddd background=000000 diff --git a/themes/material-amber b/themes/material-amber index 27983833..69126aa0 100644 --- a/themes/material-amber +++ b/themes/material-amber @@ -2,7 +2,10 @@ # Material Amber # Based on material.io guidelines with Amber 50 background -[colors] +[main] +initial-color-theme=light + +[colors-light] cursor=fff8e1 21201d foreground = 21201d background = fff8e1 diff --git a/themes/material-design b/themes/material-design index 4a9e008a..bf1d0a6b 100644 --- a/themes/material-design +++ b/themes/material-design @@ -2,7 +2,7 @@ # Material # From https://github.com/MartinSeeler/iterm2-material-design -[colors] +[colors-dark] foreground=ECEFF1 background=263238 regular0=546E7A # black diff --git a/themes/modus-operandi b/themes/modus-operandi index 2d417bb5..6baca2f7 100644 --- a/themes/modus-operandi +++ b/themes/modus-operandi @@ -3,7 +3,11 @@ # modus-operandi # See: https://protesilaos.com/emacs/modus-themes # -[colors] + +[main] +initial-color-theme=light + +[colors-light] background=ffffff foreground=000000 regular0=000000 diff --git a/themes/modus-vivendi b/themes/modus-vivendi index 82b1075d..9ee670ec 100644 --- a/themes/modus-vivendi +++ b/themes/modus-vivendi @@ -4,7 +4,7 @@ # See: https://protesilaos.com/emacs/modus-themes # -[colors] +[colors-dark] background=000000 foreground=ffffff regular0=000000 diff --git a/themes/modus-vivendi-tinted b/themes/modus-vivendi-tinted index 67cf02a0..6a61fc79 100644 --- a/themes/modus-vivendi-tinted +++ b/themes/modus-vivendi-tinted @@ -4,7 +4,7 @@ # See: https://protesilaos.com/emacs/modus-themes # -[colors] +[colors-dark] background=0d0e1c foreground=ffffff regular0=000000 diff --git a/themes/molokai b/themes/molokai index c3935f69..19e1b6fa 100644 --- a/themes/molokai +++ b/themes/molokai @@ -2,7 +2,7 @@ # Molokai # Based on zhou13's at https://github.com/zhou13/molokai-terminal/blob/master/xterm/Xresources -[colors] +[colors-dark] background=1B1D1E foreground=CCCCCC regular0=1B1D1E diff --git a/themes/monokai-pro b/themes/monokai-pro index 5d9f31a9..3044da91 100644 --- a/themes/monokai-pro +++ b/themes/monokai-pro @@ -1,7 +1,7 @@ # -*- conf -*- # Monokai Pro -[colors] +[colors-dark] background=2D2A2E foreground=FCFCFA regular0=403E41 diff --git a/themes/moonfly b/themes/moonfly index 0dbe0e95..b30e3156 100644 --- a/themes/moonfly +++ b/themes/moonfly @@ -2,7 +2,7 @@ # moonfly # Based on https://github.com/bluz71/vim-moonfly-colors -[colors] +[colors-dark] cursor = 080808 9e9e9e foreground = b2b2b2 background = 080808 diff --git a/themes/neon b/themes/neon index d11a36d0..74884e03 100644 --- a/themes/neon +++ b/themes/neon @@ -6,7 +6,7 @@ # https://xcolors.net/neon # -[colors] +[colors-dark] foreground=f8f8f8 background=171717 regular0=171717 diff --git a/themes/night-owl b/themes/night-owl index 43a5c054..e9e40404 100644 --- a/themes/night-owl +++ b/themes/night-owl @@ -1,7 +1,7 @@ # _*_ conf _*_ # Night Owl -[colors] +[colors-dark] cursor=011627 80a4c2 foreground=d6deeb background=011627 diff --git a/themes/nightfly b/themes/nightfly index 37205f0f..ccdd183a 100644 --- a/themes/nightfly +++ b/themes/nightfly @@ -2,7 +2,7 @@ # nightfly # Based on https://github.com/bluz71/vim-nightfly-guicolors -[colors] +[colors-dark] cursor = 080808 9ca1aa foreground = acb4c2 background = 011627 diff --git a/themes/noirblaze b/themes/noirblaze index 42daf11b..b21055a4 100644 --- a/themes/noirblaze +++ b/themes/noirblaze @@ -3,7 +3,7 @@ # https://github.com/n1ghtmare/noirblaze-kitty -[colors] +[colors-dark] cursor=121212 ff0088 foreground=d5d5d5 background=121212 diff --git a/themes/nord b/themes/nord index 9b988ad6..eb2fdf0f 100644 --- a/themes/nord +++ b/themes/nord @@ -6,7 +6,7 @@ # this specific foot theme is based on nord-alacritty: # https://github.com/arcticicestudio/nord-alacritty/blob/develop/src/nord.yml -[colors] +[colors-dark] cursor = 2e3440 d8dee9 foreground = d8dee9 background = 2e3440 diff --git a/themes/nordiq b/themes/nordiq index 0df5c7de..1efccba6 100644 --- a/themes/nordiq +++ b/themes/nordiq @@ -1,7 +1,7 @@ # -*- conf -*- # Nordiq -[colors] +[colors-dark] cursor=eeeeee 9f515a foreground=dbdee9 background=0e1420 diff --git a/themes/nvim b/themes/nvim index bf629c0a..74dd1ac6 100644 --- a/themes/nvim +++ b/themes/nvim @@ -3,7 +3,7 @@ # Uses the dark color palette from the default Neovim color scheme # See: https://github.com/neovim/neovim/blob/fb6c059dc55c8d594102937be4dd70f5ff51614a/src/nvim/highlight_group.c#L419 -[colors] +[colors-dark] cursor=14161b e0e2ea # NvimDarkGrey2 NvimLightGrey2 foreground=e0e2ea # NvimLightGrey2 background=14161b # NvimDarkGrey2 @@ -29,7 +29,7 @@ bright5=ffcaff # NvimLightMagenta bright6=8cf8f7 # NvimLightCyan bright7=eef1f8 # NvimLightGrey1 -[colors2] +[colors-light] cursor=e0e2ea 14161b # NvimLightGrey2 NvimDarkGrey2 foreground=14161b # NvimDarkGrey2 background=e0e2ea # NvimLightGrey2 diff --git a/themes/nvim-dark b/themes/nvim-dark index 9a177770..fe3afb74 100644 --- a/themes/nvim-dark +++ b/themes/nvim-dark @@ -3,7 +3,7 @@ # Uses the dark color palette from the default Neovim color scheme # See: https://github.com/neovim/neovim/blob/fb6c059dc55c8d594102937be4dd70f5ff51614a/src/nvim/highlight_group.c#L419 -[colors] +[colors-dark] cursor=14161b e0e2ea # NvimDarkGrey2 NvimLightGrey2 foreground=e0e2ea # NvimLightGrey2 background=14161b # NvimDarkGrey2 diff --git a/themes/nvim-light b/themes/nvim-light index aca4e156..fd8943b1 100644 --- a/themes/nvim-light +++ b/themes/nvim-light @@ -3,7 +3,10 @@ # Uses the light color palette from the default Neovim color scheme # See: https://github.com/neovim/neovim/blob/fb6c059dc55c8d594102937be4dd70f5ff51614a/src/nvim/highlight_group.c#L334 -[colors] +[main] +initial-color-theme=light + +[colors-light] cursor=e0e2ea 14161b # NvimLightGrey2 NvimDarkGrey2 foreground=14161b # NvimDarkGrey2 background=e0e2ea # NvimLightGrey2 diff --git a/themes/onedark b/themes/onedark index 0932960b..6d66e87e 100644 --- a/themes/onedark +++ b/themes/onedark @@ -1,7 +1,7 @@ # OneDark # Palette based on the same theme from https://github.com/dexpota/kitty-themes -[colors] +[colors-dark] cursor=111111 cccccc foreground=979eab background=282c34 diff --git a/themes/onehalf-dark b/themes/onehalf-dark index 1adc9e23..1faca455 100644 --- a/themes/onehalf-dark +++ b/themes/onehalf-dark @@ -7,7 +7,7 @@ # + cursor colors from: # https://github.com/sonph/onehalf/blob/master/iterm/OneHalfDark.itermcolors -[colors] +[colors-dark] cursor=dcdfe4 a3b3cc foreground=dcdfe4 background=282c34 diff --git a/themes/panda b/themes/panda index b02c7e9f..2c1dc7c5 100644 --- a/themes/panda +++ b/themes/panda @@ -1,7 +1,7 @@ # -*- conf -*- # http://panda.siamak.me/ -[colors] +[colors-dark] # alpha=1.0 background=1D1E20 foreground=F0F0F0 diff --git a/themes/paper-color b/themes/paper-color index f158c148..09934925 100644 --- a/themes/paper-color +++ b/themes/paper-color @@ -2,7 +2,7 @@ # PaperColorDark # Palette based on https://github.com/NLKNguyen/papercolor-theme -[colors] +[colors-dark] cursor=1c1c1c eeeeee background=1c1c1c foreground=eeeeee @@ -25,7 +25,7 @@ bright7=5f8787 # bright white # selection-foreground=1c1c1c # selection-background=af87d7 -[colors2] +[colors-light] cursor=eeeeee 444444 background=eeeeee foreground=444444 diff --git a/themes/paper-color-dark b/themes/paper-color-dark index 991bcc9d..26260c6f 100644 --- a/themes/paper-color-dark +++ b/themes/paper-color-dark @@ -2,7 +2,7 @@ # PaperColorDark # Palette based on https://github.com/NLKNguyen/papercolor-theme -[colors] +[colors-dark] cursor=1c1c1c eeeeee background=1c1c1c foreground=eeeeee diff --git a/themes/paper-color-light b/themes/paper-color-light index b8a6ceec..2f7a8003 100644 --- a/themes/paper-color-light +++ b/themes/paper-color-light @@ -2,7 +2,10 @@ # PaperColor Light # Palette based on https://github.com/NLKNguyen/papercolor-theme -[colors] +[main] +initial-color-theme=light +xs +[colors-light] cursor=eeeeee 444444 background=eeeeee foreground=444444 diff --git a/themes/poimandres b/themes/poimandres index b4edc175..a2123ac5 100644 --- a/themes/poimandres +++ b/themes/poimandres @@ -1,7 +1,7 @@ # Based on Poimandres color theme for kitti terminal emulator # https://github.com/ubmit/poimandres-kitty -[colors] +[colors-dark] cursor=1b1e28 ffffff foreground=a6accd background=1b1e28 diff --git a/themes/rezza b/themes/rezza index 56814a77..62a08cc2 100644 --- a/themes/rezza +++ b/themes/rezza @@ -13,7 +13,7 @@ # and also posted here: # https://forums.debian.net/viewtopic.php?t=29981 -[colors] +[colors-dark] foreground = cccccc background = 191911 diff --git a/themes/rose-pine b/themes/rose-pine index 2cae00e8..b9aa7e2a 100644 --- a/themes/rose-pine +++ b/themes/rose-pine @@ -1,7 +1,7 @@ # -*- conf -*- # Rosé Pine -[colors] +[colors-dark] cursor=191724 e0def4 background=191724 foreground=e0def4 diff --git a/themes/rose-pine-dawn b/themes/rose-pine-dawn index 674c7a21..d2742c72 100644 --- a/themes/rose-pine-dawn +++ b/themes/rose-pine-dawn @@ -1,7 +1,11 @@ # -*- conf -*- # Rosé Pine Dawn -[colors] +[main] +initial-color-theme=light + + +[colors-light] cursor=faf4ed 575279 background=faf4ed foreground=575279 diff --git a/themes/rose-pine-moon b/themes/rose-pine-moon index cbc81451..51b9a33a 100644 --- a/themes/rose-pine-moon +++ b/themes/rose-pine-moon @@ -1,7 +1,7 @@ # -*- conf -*- # Rosé Pine Moon -[colors] +[colors-dark] cursor=232136 e0def4 background=232136 foreground=e0def4 diff --git a/themes/selenized b/themes/selenized index cde35723..83fea617 100644 --- a/themes/selenized +++ b/themes/selenized @@ -1,7 +1,7 @@ # -*- conf -*- # Selenized dark -[colors] +[colors-dark] cursor = 103c48 53d6c7 background= 103c48 foreground= adbcbc @@ -24,7 +24,7 @@ bright5= ff84cd bright6= 53d6c7 bright7= cad8d9 -[colors2] +[colors-light] cursor=fbf3db 00978a background= fbf3db foreground= 53676d diff --git a/themes/selenized-black b/themes/selenized-black index 591751f0..8a93187e 100644 --- a/themes/selenized-black +++ b/themes/selenized-black @@ -1,7 +1,7 @@ # -*- conf -*- # Selenized black -[colors] +[colors-dark] cursor = 181818 56d8c9 background= 181818 foreground= b9b9b9 diff --git a/themes/selenized-dark b/themes/selenized-dark index 5d062dec..8ace1c05 100644 --- a/themes/selenized-dark +++ b/themes/selenized-dark @@ -1,7 +1,7 @@ # -*- conf -*- # Selenized dark -[colors] +[colors-dark] cursor = 103c48 53d6c7 background= 103c48 foreground= adbcbc diff --git a/themes/selenized-light b/themes/selenized-light index 04dffbea..c842fc3c 100644 --- a/themes/selenized-light +++ b/themes/selenized-light @@ -1,7 +1,10 @@ # -*- conf -*- # Selenized light -[colors] +[main] +initial-color-theme=light + +[colors-light] cursor=fbf3db 00978a background= fbf3db foreground= 53676d diff --git a/themes/selenized-white b/themes/selenized-white index 5a7d68b2..659bf814 100644 --- a/themes/selenized-white +++ b/themes/selenized-white @@ -1,7 +1,10 @@ # -*- conf -*- # Selenized white -[colors] +[main] +initial-color-theme=light + +[colors-light] cursor=ffffff 009a8a background= ffffff foreground= 474747 diff --git a/themes/solarized b/themes/solarized index 335c738e..f1844b3c 100644 --- a/themes/solarized +++ b/themes/solarized @@ -2,7 +2,7 @@ # Solarized dark+light # Dark -[colors] +[colors-dark] cursor= 002b36 93a1a1 background= 002b36 foreground= 839496 @@ -25,7 +25,7 @@ bright7= fdf6e3 # Light -[colors2] +[colors-light] cursor= fdf6e3 586e75 background= fdf6e3 foreground= 657b83 diff --git a/themes/solarized-dark b/themes/solarized-dark index 4997eb4a..6335fa0f 100644 --- a/themes/solarized-dark +++ b/themes/solarized-dark @@ -1,7 +1,7 @@ # -*- conf -*- # Solarized dark -[colors] +[colors-dark] cursor= 002b36 93a1a1 background= 002b36 foreground= 839496 diff --git a/themes/solarized-dark-normal-brights b/themes/solarized-dark-normal-brights index f0c2172d..7b608110 100644 --- a/themes/solarized-dark-normal-brights +++ b/themes/solarized-dark-normal-brights @@ -1,7 +1,7 @@ # -*- conf -*- # Solarized dark -[colors] +[colors-dark] cursor= 002b36 93a1a1 background= 002b36 foreground= 839496 diff --git a/themes/solarized-light b/themes/solarized-light index 3d750277..db27be43 100644 --- a/themes/solarized-light +++ b/themes/solarized-light @@ -1,7 +1,10 @@ # -*- conf -*- # Solarized light -[colors] +[main] +initial-color-theme=light + +[colors-light] cursor= fdf6e3 586e75 background= fdf6e3 foreground= 657b83 diff --git a/themes/solarized-normal-brights b/themes/solarized-normal-brights index a7724cd3..3bd3c189 100644 --- a/themes/solarized-normal-brights +++ b/themes/solarized-normal-brights @@ -9,7 +9,7 @@ # encoding to sRGB again. # Dark -[colors] +[colors-dark] cursor= 002b36 93a1a1 background= 002b36 foreground= 839496 @@ -32,7 +32,7 @@ bright7= ffffff # Light -[colors2] +[colors-light] cursor= fdf6e3 586e75 background= fdf6e3 foreground= 657b83 diff --git a/themes/srcery b/themes/srcery index 54966707..612c82cc 100644 --- a/themes/srcery +++ b/themes/srcery @@ -1,6 +1,6 @@ # srcery -[colors] +[colors-dark] background= 1c1b19 foreground= fce8c3 regular0= 1c1b19 diff --git a/themes/starlight b/themes/starlight index ed39f277..81ce1a5f 100644 --- a/themes/starlight +++ b/themes/starlight @@ -1,7 +1,7 @@ # -*- conf -*- # Theme: starlight V4 (https://github.com/CosmicToast/starlight) -[colors] +[colors-dark] foreground = FFFFFF background = 242424 diff --git a/themes/tango b/themes/tango index a93d29cb..5ea43f63 100644 --- a/themes/tango +++ b/themes/tango @@ -1,7 +1,7 @@ # -*- conf -*- # Tango -[colors] +[colors-dark] cursor=000000 babdb6 foreground=babdb6 background=000000 diff --git a/themes/tempus-autumn b/themes/tempus-autumn index 74228e90..214478bb 100644 --- a/themes/tempus-autumn +++ b/themes/tempus-autumn @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Dark theme with a palette inspired by earthly colours (WCAG AA compliant) -[colors] +[colors-dark] #cursor = 302420 a9a2a6 foreground = a9a2a6 background = 302420 diff --git a/themes/tempus-classic b/themes/tempus-classic index b35dc5e5..95b37b76 100644 --- a/themes/tempus-classic +++ b/themes/tempus-classic @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Dark theme with warm hues (WCAG AA compliant) -[colors] +[colors-dark] #cursor = 232323 aeadaf foreground = aeadaf background = 232323 diff --git a/themes/tempus-dawn b/themes/tempus-dawn index dc45f29d..c288544e 100644 --- a/themes/tempus-dawn +++ b/themes/tempus-dawn @@ -3,7 +3,11 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Light theme with a soft, slightly desaturated palette (WCAG AA compliant) -[colors] +[main] +initial-color-theme=light + + +[colors-light] #cursor = eff0f2 4a4b4e foreground = 4a4b4e background = eff0f2 diff --git a/themes/tempus-day b/themes/tempus-day index 1df70137..03454f04 100644 --- a/themes/tempus-day +++ b/themes/tempus-day @@ -3,7 +3,10 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Light theme with warm colours (WCAG AA compliant) -[colors] +[main] +initial-color-theme=light + +[colors-light] #cursor = f8f2e5 464340 foreground = 464340 background = f8f2e5 diff --git a/themes/tempus-dusk b/themes/tempus-dusk index 5b4d1bea..cd27aaaa 100644 --- a/themes/tempus-dusk +++ b/themes/tempus-dusk @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Dark theme with a deep blue-ish, slightly desaturated palette (WCAG AA compliant) -[colors] +[colors-dark] #cursor = 1f252d a2a8ba foreground = a2a8ba background = 1f252d diff --git a/themes/tempus-fugit b/themes/tempus-fugit index ebd082fe..b9dce351 100644 --- a/themes/tempus-fugit +++ b/themes/tempus-fugit @@ -3,7 +3,10 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Light, pleasant theme optimised for long writing/coding sessions (WCAG AA compliant) -[colors] +[main] +initial-color-theme=light + +[colors-light] #cursor = fff5f3 4d595f foreground = 4d595f background = fff5f3 diff --git a/themes/tempus-future b/themes/tempus-future index c97d379d..1f8c3c79 100644 --- a/themes/tempus-future +++ b/themes/tempus-future @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Dark theme with colours inspired by concept art of outer space (WCAG AAA compliant) -[colors] +[colors-dark] #cursor = 090a18 b4abac foreground = b4abac background = 090a18 diff --git a/themes/tempus-night b/themes/tempus-night index 7c97681d..aae80f02 100644 --- a/themes/tempus-night +++ b/themes/tempus-night @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: High contrast dark theme with bright colours (WCAG AAA compliant) -[colors] +[colors-dark] #cursor = 1a1a1a e0e0e0 foreground = e0e0e0 background = 1a1a1a diff --git a/themes/tempus-past b/themes/tempus-past index af408b00..5f90ddf1 100644 --- a/themes/tempus-past +++ b/themes/tempus-past @@ -3,7 +3,10 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Light theme inspired by old vaporwave concept art (WCAG AA compliant) -[colors] +[main] +initial-color-theme=light + +[colors-light] #cursor = f3f2f4 53545b foreground = 53545b background = f3f2f4 diff --git a/themes/tempus-rift b/themes/tempus-rift index e0cea4da..8add657a 100644 --- a/themes/tempus-rift +++ b/themes/tempus-rift @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Dark theme with a subdued palette on the green side of the spectrum (WCAG AA compliant) -[colors] +[colors-dark] #cursor = 162c22 bbbcbc foreground = bbbcbc background = 162c22 diff --git a/themes/tempus-spring b/themes/tempus-spring index b98be3b4..eb15a1be 100644 --- a/themes/tempus-spring +++ b/themes/tempus-spring @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Dark theme with a palette inspired by early spring colours (WCAG AA compliant) -[colors] +[colors-dark] #cursor = 283a37 b5b8b7 foreground = b5b8b7 background = 283a37 diff --git a/themes/tempus-summer b/themes/tempus-summer index cd904010..74c8faa2 100644 --- a/themes/tempus-summer +++ b/themes/tempus-summer @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Dark theme with colours inspired by summer evenings by the sea (WCAG AA compliant) -[colors] +[colors-dark] #cursor = 202c3d a0abae foreground = a0abae background = 202c3d diff --git a/themes/tempus-tempest b/themes/tempus-tempest index 2c84454e..f1cf55bf 100644 --- a/themes/tempus-tempest +++ b/themes/tempus-tempest @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: A green-scale, subtle theme for late night hackers (WCAG AAA compliant) -[colors] +[colors-dark] #cursor = 282b2b b6e0ca foreground = b6e0ca background = 282b2b diff --git a/themes/tempus-totus b/themes/tempus-totus index 3eb21644..fae6ede3 100644 --- a/themes/tempus-totus +++ b/themes/tempus-totus @@ -3,7 +3,10 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Light theme for prose or for coding in an open space (WCAG AAA compliant) -[colors] +[main] +initial-color-theme=light + +[colors-light] #cursor = ffffff 4a484d foreground = 4a484d background = ffffff diff --git a/themes/tempus-warp b/themes/tempus-warp index 911fb266..906b3f37 100644 --- a/themes/tempus-warp +++ b/themes/tempus-warp @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Dark theme with a vibrant palette (WCAG AA compliant) -[colors] +[colors-dark] #cursor = 001514 a29fa0 foreground = a29fa0 background = 001514 diff --git a/themes/tempus-winter b/themes/tempus-winter index e4307142..dc95128b 100644 --- a/themes/tempus-winter +++ b/themes/tempus-winter @@ -3,7 +3,7 @@ # author: Protesilaos Stavrou (https://protesilaos.com) # description: Dark theme with a palette inspired by winter nights at the city (WCAG AA compliant) -[colors] +[colors-dark] #cursor = 202427 8da3b8 foreground = 8da3b8 background = 202427 diff --git a/themes/tokyonight-light b/themes/tokyonight-light index ffcae689..359a31b9 100644 --- a/themes/tokyonight-light +++ b/themes/tokyonight-light @@ -2,7 +2,10 @@ # Reference: https://github.com/tokyo-night/tokyo-night-vscode-theme/blob/master/themes/tokyo-night-light-color-theme.json -[colors] +[main] +initial-color-theme=light + +[colors-light] background=d6d8df foreground=343b58 regular0=343b58 diff --git a/themes/tokyonight-night b/themes/tokyonight-night index f789e1bd..58037f72 100644 --- a/themes/tokyonight-night +++ b/themes/tokyonight-night @@ -1,6 +1,6 @@ # -*- conf -*- -[colors] +[colors-dark] background=1a1b26 foreground=c0caf5 regular0=15161E diff --git a/themes/tokyonight-storm b/themes/tokyonight-storm index 074b4697..4dbbf6c6 100644 --- a/themes/tokyonight-storm +++ b/themes/tokyonight-storm @@ -1,6 +1,6 @@ # -*- conf -*- -[colors] +[colors-dark] background=24283b foreground=c0caf5 regular0=1D202F diff --git a/themes/visibone b/themes/visibone index 9979bee0..b989b36b 100644 --- a/themes/visibone +++ b/themes/visibone @@ -1,7 +1,7 @@ # -*- conf -*- # VisiBone -[colors] +[colors-dark] cursor=010101 ffffff foreground=ffffff background=010101 diff --git a/themes/xterm b/themes/xterm index bf17f5e7..a9382fd8 100644 --- a/themes/xterm +++ b/themes/xterm @@ -1,7 +1,7 @@ # -*- conf -*- # The default palette of xterm. -[colors] +[colors-dark] foreground=e5e5e5 background=000000 regular0=000000 # black diff --git a/themes/zenburn b/themes/zenburn index bace080c..37a26812 100644 --- a/themes/zenburn +++ b/themes/zenburn @@ -1,6 +1,6 @@ # -*- conf -*- -[colors] +[colors-dark] foreground=dcdccc background=111111