mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
commit
5c58fc2a28
7 changed files with 49 additions and 2 deletions
|
|
@ -74,10 +74,13 @@
|
|||
- `scrollback-down-page` (shift+page-down)
|
||||
- `scrollback-down-half-page` (none)
|
||||
- `scrollback-down-line` (none)
|
||||
* Support for visual bell which flashes the terminal window.
|
||||
([#1337][1337]).
|
||||
|
||||
[1077]: https://codeberg.org/dnkl/foot/issues/1077
|
||||
[1364]: https://codeberg.org/dnkl/foot/issues/1364
|
||||
[419]: https://codeberg.org/dnkl/foot/issues/419
|
||||
[1337]: https://codeberg.org/dnkl/foot/issues/1337
|
||||
|
||||
|
||||
### Changed
|
||||
|
|
|
|||
21
config.c
21
config.c
|
|
@ -1054,6 +1054,8 @@ parse_section_bell(struct context *ctx)
|
|||
return value_to_bool(ctx, &conf->bell.urgent);
|
||||
else if (strcmp(key, "notify") == 0)
|
||||
return value_to_bool(ctx, &conf->bell.notify);
|
||||
else if (strcmp(key, "visual") == 0)
|
||||
return value_to_bool(ctx, &conf->bell.flash);
|
||||
else if (strcmp(key, "command") == 0)
|
||||
return value_to_spawn_template(ctx, &conf->bell.command);
|
||||
else if (strcmp(key, "command-focused") == 0)
|
||||
|
|
@ -1237,6 +1239,7 @@ parse_section_colors(struct context *ctx)
|
|||
return true;
|
||||
}
|
||||
|
||||
else if (strcmp(key, "flash") == 0) color = &conf->colors.flash;
|
||||
else if (strcmp(key, "foreground") == 0) color = &conf->colors.fg;
|
||||
else if (strcmp(key, "background") == 0) color = &conf->colors.bg;
|
||||
else if (strcmp(key, "selection-foreground") == 0) color = &conf->colors.selection_fg;
|
||||
|
|
@ -1320,6 +1323,21 @@ parse_section_colors(struct context *ctx)
|
|||
return true;
|
||||
}
|
||||
|
||||
else if (strcmp(key, "flash-alpha") == 0) {
|
||||
float alpha;
|
||||
if (!value_to_float(ctx, &alpha))
|
||||
return false;
|
||||
|
||||
if (alpha < 0. || alpha > 1.) {
|
||||
LOG_CONTEXTUAL_ERR("not in range 0.0-1.0");
|
||||
return false;
|
||||
}
|
||||
|
||||
conf->colors.flash_alpha = alpha * 65535.;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
else {
|
||||
LOG_CONTEXTUAL_ERR("not valid option");
|
||||
return false;
|
||||
|
|
@ -2980,6 +2998,7 @@ config_load(struct config *conf, const char *conf_path,
|
|||
.bell = {
|
||||
.urgent = false,
|
||||
.notify = false,
|
||||
.flash = false,
|
||||
.command = {
|
||||
.argv = {.args = NULL},
|
||||
},
|
||||
|
|
@ -3003,6 +3022,8 @@ config_load(struct config *conf, const char *conf_path,
|
|||
.colors = {
|
||||
.fg = default_foreground,
|
||||
.bg = default_background,
|
||||
.flash = 0x7f7f00,
|
||||
.flash_alpha = 0x7fff,
|
||||
.alpha = 0xffff,
|
||||
.selection_fg = 0x80000000, /* Use default bg */
|
||||
.selection_bg = 0x80000000, /* Use default fg */
|
||||
|
|
|
|||
3
config.h
3
config.h
|
|
@ -160,6 +160,7 @@ struct config {
|
|||
struct {
|
||||
bool urgent;
|
||||
bool notify;
|
||||
bool flash;
|
||||
struct config_spawn_template command;
|
||||
bool command_focused;
|
||||
} bell;
|
||||
|
|
@ -202,6 +203,8 @@ struct config {
|
|||
struct {
|
||||
uint32_t fg;
|
||||
uint32_t bg;
|
||||
uint32_t flash;
|
||||
uint32_t flash_alpha;
|
||||
uint32_t table[256];
|
||||
uint16_t alpha;
|
||||
uint32_t selection_fg;
|
||||
|
|
|
|||
|
|
@ -394,6 +394,10 @@ Note: do not set *TERM* here; use the *term* option in the main
|
|||
|
||||
Default: _no_
|
||||
|
||||
*visual*
|
||||
When set to _yes_, foot will flash the terminal window. Default:
|
||||
_no_
|
||||
|
||||
*command*
|
||||
When set, foot will execute this command when *BEL* is received.
|
||||
Default: none
|
||||
|
|
@ -642,6 +646,13 @@ can configure the background transparency with the _alpha_ option.
|
|||
Color to use for the underline used to highlight URLs in URL
|
||||
mode. Default: _regular3_.
|
||||
|
||||
*flash*
|
||||
Color to use for the terminal window flash. Default: _7f7f00_.
|
||||
|
||||
*flash-alpha*
|
||||
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: csd
|
||||
|
||||
This section controls the look of the _CSDs_ (Client Side
|
||||
|
|
|
|||
3
foot.ini
3
foot.ini
|
|
@ -43,6 +43,7 @@
|
|||
[bell]
|
||||
# urgent=no
|
||||
# notify=no
|
||||
# visual=no
|
||||
# command=
|
||||
# command-focused=no
|
||||
|
||||
|
|
@ -77,6 +78,8 @@
|
|||
# alpha=1.0
|
||||
# background=242424
|
||||
# foreground=ffffff
|
||||
# flash=7f7f00
|
||||
# flash-alpha=0.5
|
||||
|
||||
## Normal/regular colors (color palette 0-7)
|
||||
# regular0=242424 # black
|
||||
|
|
|
|||
6
render.c
6
render.c
|
|
@ -1588,7 +1588,9 @@ render_overlay(struct terminal *term)
|
|||
break;
|
||||
|
||||
case OVERLAY_FLASH:
|
||||
color = (pixman_color_t){.red=0x7fff, .green=0x7fff, .blue=0, .alpha=0x7fff};
|
||||
color = color_hex_to_pixman_with_alpha(
|
||||
term->conf->colors.flash,
|
||||
term->conf->colors.flash_alpha);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -2193,7 +2195,7 @@ render_csd_button_maximize_maximized(
|
|||
{ x_margin + shrink, y_margin + thick, thick, width - 2 * thick - shrink },
|
||||
{ x_margin + width - thick - shrink, y_margin + thick, thick, width - 2 * thick - shrink },
|
||||
{ x_margin + shrink, y_margin + width - thick - shrink, width - 2 * shrink, thick }});
|
||||
|
||||
|
||||
pixman_image_unref(src);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3270,6 +3270,7 @@ term_flash(struct terminal *term, unsigned duration_ms)
|
|||
void
|
||||
term_bell(struct terminal *term)
|
||||
{
|
||||
|
||||
if (!term->bell_action_enabled)
|
||||
return;
|
||||
|
||||
|
|
@ -3288,6 +3289,9 @@ term_bell(struct terminal *term)
|
|||
if (term->conf->bell.notify)
|
||||
notify_notify(term, "Bell", "Bell in terminal");
|
||||
|
||||
if (term->conf->bell.flash)
|
||||
term_flash(term, 100);
|
||||
|
||||
if ((term->conf->bell.command.argv.args != NULL) &&
|
||||
(!term->kbd_focus || term->conf->bell.command_focused))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue