config: add cursor.unfocused-style

This option controls how we render the cursor when the terminal window
is unfocused.

Possible values are:

* hollow: the default, and how we rendered the cursor before this
  patch.
* unchanged: render the cursor exactly the same way as when the window
  is focused.
* none: do not render any cursor at all

Closes #1582
This commit is contained in:
Daniel Eklöf 2024-04-09 16:28:54 +02:00
parent 9287946b36
commit e5a2ac4b57
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
6 changed files with 59 additions and 7 deletions

View file

@ -1383,6 +1383,16 @@ parse_section_cursor(struct context *ctx)
(int *)&conf->cursor.style);
}
else if (streq(key, "unfocused-style")) {
_Static_assert(sizeof(conf->cursor.unfocused_style) == sizeof(int),
"enum is not 32-bit");
return value_to_enum(
ctx,
(const char *[]){"unchanged", "hollow", "none", NULL},
(int *)&conf->cursor.unfocused_style);
}
else if (streq(key, "blink"))
return value_to_bool(ctx, &conf->cursor.blink);
@ -3090,6 +3100,7 @@ config_load(struct config *conf, const char *conf_path,
.cursor = {
.style = CURSOR_BLOCK,
.unfocused_style = CURSOR_UNFOCUSED_HOLLOW,
.blink = false,
.color = {
.text = 0,