config: move cursor.color to colors.cursor

This commit is contained in:
Daniel Eklöf 2025-04-20 07:16:18 +02:00
parent a7276d9dff
commit 624c383a1f
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
7 changed files with 69 additions and 31 deletions

View file

@ -64,7 +64,15 @@
## Unreleased ## Unreleased
### Added ### Added
### Changed ### Changed
* `cursor.color` moved to `colors.cursor`.
### Deprecated ### Deprecated
* `cursor.color` config option; use `colors.cursor` instead.
### Removed ### Removed
### Fixed ### Fixed
### Security ### Security

View file

@ -1445,6 +1445,20 @@ parse_section_colors(struct context *ctx)
return true; return true;
} }
else if (streq(key, "cursor")) {
if (!value_to_two_colors(
ctx,
&conf->colors.cursor.text,
&conf->colors.cursor.cursor,
false))
{
return false;
}
conf->colors.use_custom.cursor = true;
return true;
}
else if (streq(key, "urls")) { else if (streq(key, "urls")) {
if (!value_to_color(ctx, &conf->colors.url, false)) if (!value_to_color(ctx, &conf->colors.url, false))
return false; return false;
@ -1537,17 +1551,24 @@ parse_section_cursor(struct context *ctx)
return value_to_uint32(ctx, 10, &conf->cursor.blink.rate_ms); return value_to_uint32(ctx, 10, &conf->cursor.blink.rate_ms);
else if (streq(key, "color")) { else if (streq(key, "color")) {
LOG_WARN("%s:%d: cursor.color: deprecated; use colors.cursor instead",
ctx->path, ctx->lineno);
user_notification_add(
&conf->notifications,
USER_NOTIFICATION_DEPRECATED,
xstrdup("cursor.color: use colors.cursor instead"));
if (!value_to_two_colors( if (!value_to_two_colors(
ctx, ctx,
&conf->cursor.color.text, &conf->colors.cursor.text,
&conf->cursor.color.cursor, &conf->colors.cursor.cursor,
false)) false))
{ {
return false; return false;
} }
conf->cursor.color.text |= 1u << 31; conf->colors.use_custom.cursor = true;
conf->cursor.color.cursor |= 1u << 31;
return true; return true;
} }
@ -3356,6 +3377,10 @@ config_load(struct config *conf, const char *conf_path,
.alpha_mode = ALPHA_MODE_DEFAULT, .alpha_mode = ALPHA_MODE_DEFAULT,
.selection_fg = 0x80000000, /* Use default bg */ .selection_fg = 0x80000000, /* Use default bg */
.selection_bg = 0x80000000, /* Use default fg */ .selection_bg = 0x80000000, /* Use default fg */
.cursor = {
.text = 0,
.cursor = 0,
},
.use_custom = { .use_custom = {
.selection = false, .selection = false,
.jump_label = false, .jump_label = false,
@ -3371,10 +3396,6 @@ config_load(struct config *conf, const char *conf_path,
.enabled = false, .enabled = false,
.rate_ms = 500, .rate_ms = 500,
}, },
.color = {
.text = 0,
.cursor = 0,
},
.beam_thickness = {.pt = 1.5}, .beam_thickness = {.pt = 1.5},
.underline_thickness = {.pt = 0., .px = -1}, .underline_thickness = {.pt = 0., .px = -1},
}, },

View file

@ -149,7 +149,12 @@ struct color_theme {
ALPHA_MODE_DEFAULT, ALPHA_MODE_DEFAULT,
ALPHA_MODE_MATCHING, ALPHA_MODE_MATCHING,
ALPHA_MODE_ALL ALPHA_MODE_ALL
} alpha_mode; } alpha_mode;
struct {
uint32_t text;
uint32_t cursor;
} cursor;
struct { struct {
uint32_t fg; uint32_t fg;
@ -174,6 +179,7 @@ struct color_theme {
} search_box; } search_box;
struct { struct {
bool cursor:1;
bool selection:1; bool selection:1;
bool jump_label:1; bool jump_label:1;
bool scrollback_indicator:1; bool scrollback_indicator:1;
@ -306,10 +312,6 @@ struct config {
bool enabled; bool enabled;
uint32_t rate_ms; uint32_t rate_ms;
} blink; } blink;
struct {
uint32_t text;
uint32_t cursor;
} color;
struct pt_or_px beam_thickness; struct pt_or_px beam_thickness;
struct pt_or_px underline_thickness; struct pt_or_px underline_thickness;
} cursor; } cursor;

View file

@ -898,15 +898,6 @@ applications can change these at runtime.
enabled. Expressed in milliseconds between each blink. Default: enabled. Expressed in milliseconds between each blink. Default:
_500_. _500_.
*color*
Two space separated RRGGBB values (i.e. plain old 6-digit hex
values, without prefix) specifying the foreground (text) and
background (cursor) colors for the cursor.
Example: *ff0000 00ff00* (green cursor, red text)
Default: the regular foreground and background colors, reversed.
*beam-thickness* *beam-thickness*
Thickness (width) of the beam styled cursor. The value is in Thickness (width) of the beam styled cursor. The value is in
points, and its exact value thus depends on the monitor's DPI. To points, and its exact value thus depends on the monitor's DPI. To
@ -967,6 +958,15 @@ 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 without prefix). That is, they do *not* have an alpha component. You
can configure the background transparency with the _alpha_ option. can configure the background transparency with the _alpha_ option.
*cursor*
Two space separated RRGGBB values (i.e. plain old 6-digit hex
values, without prefix) specifying the foreground (text) and
background (cursor) colors for the cursor.
Example: *ff0000 00ff00* (green cursor, red text)
Default: the regular foreground and background colors, reversed.
*foreground* *foreground*
Default foreground color. This is the color used when no ANSI Default foreground color. This is the color used when no ANSI
color is being used. Default: _839496_. color is being used. Default: _839496_.

View file

@ -85,7 +85,6 @@
[cursor] [cursor]
# style=block # style=block
# color=<inverse foreground/background>
# blink=no # blink=no
# blink-rate=500 # blink-rate=500
# beam-thickness=1.5 # beam-thickness=1.5
@ -106,6 +105,8 @@
# flash=7f7f00 # flash=7f7f00
# flash-alpha=0.5 # flash-alpha=0.5
# cursor=<inverse foreground/background>
## Normal/regular colors (color palette 0-7) ## Normal/regular colors (color palette 0-7)
# regular0=242424 # black # regular0=242424 # black
# regular1=f62b5a # red # regular1=f62b5a # red

10
osc.c
View file

@ -1570,8 +1570,14 @@ osc_dispatch(struct terminal *term)
case 112: case 112:
LOG_DBG("resetting cursor color"); LOG_DBG("resetting cursor color");
term->colors.cursor_fg = term->conf->cursor.color.text; term->colors.cursor_fg = term->conf->colors.cursor.text;
term->colors.cursor_bg = term->conf->cursor.color.cursor; term->colors.cursor_bg = term->conf->colors.cursor.cursor;
if (term->conf->colors.use_custom.cursor) {
term->colors.cursor_fg |= 1u << 31;
term->colors.cursor_bg |= 1u << 31;
}
term_damage_cursor(term); term_damage_cursor(term);
break; break;

View file

@ -1298,8 +1298,8 @@ term_init(const struct config *conf, struct fdm *fdm, struct reaper *reaper,
.fg = conf->colors.fg, .fg = conf->colors.fg,
.bg = conf->colors.bg, .bg = conf->colors.bg,
.alpha = conf->colors.alpha, .alpha = conf->colors.alpha,
.cursor_fg = conf->cursor.color.text, .cursor_fg = (conf->colors.use_custom.cursor ? 1u << 31 : 0) | conf->colors.cursor.text,
.cursor_bg = conf->cursor.color.cursor, .cursor_bg = (conf->colors.use_custom.cursor ? 1u << 31 : 0) | conf->colors.cursor.cursor,
.selection_fg = conf->colors.selection_fg, .selection_fg = conf->colors.selection_fg,
.selection_bg = conf->colors.selection_bg, .selection_bg = conf->colors.selection_bg,
.use_custom_selection = conf->colors.use_custom.selection, .use_custom_selection = conf->colors.use_custom.selection,
@ -2153,8 +2153,8 @@ term_reset(struct terminal *term, bool hard)
term->colors.fg = term->conf->colors.fg; term->colors.fg = term->conf->colors.fg;
term->colors.bg = term->conf->colors.bg; term->colors.bg = term->conf->colors.bg;
term->colors.alpha = term->conf->colors.alpha; term->colors.alpha = term->conf->colors.alpha;
term->colors.cursor_fg = term->conf->cursor.color.text; term->colors.cursor_fg = (term->conf->colors.use_custom.cursor ? 1u << 31 : 0) | term->conf->colors.cursor.text;
term->colors.cursor_bg = term->conf->cursor.color.cursor; term->colors.cursor_bg = (term->conf->colors.use_custom.cursor ? 1u << 31 : 0) | term->conf->colors.cursor.cursor;
term->colors.selection_fg = term->conf->colors.selection_fg; term->colors.selection_fg = term->conf->colors.selection_fg;
term->colors.selection_bg = term->conf->colors.selection_bg; term->colors.selection_bg = term->conf->colors.selection_bg;
term->colors.use_custom_selection = term->conf->colors.use_custom.selection; term->colors.use_custom_selection = term->conf->colors.use_custom.selection;