diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4e3cbc7e..27f92355 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -34,6 +34,11 @@
## Unreleased
### Added
+
+* `notify-focus-inhibit` boolean option, which can be used to control whether
+ desktop notifications should be inhibited when the terminal has keyboard
+ focus
+
### Changed
### Deprecated
### Removed
diff --git a/config.c b/config.c
index e3b79e3e..3448cab6 100644
--- a/config.c
+++ b/config.c
@@ -1012,6 +1012,10 @@ parse_section_main(const char *key, const char *value, struct config *conf,
}
}
+ else if (strcmp(key, "notify-focus-inhibit") == 0) {
+ conf->notify_focus_inhibit = str_to_bool(value);
+ }
+
else if (strcmp(key, "url-launch") == 0) {
deprecated_url_option(
conf, "url-launch", "launch", path, lineno);
@@ -2956,6 +2960,7 @@ config_load(struct config *conf, const char *conf_path,
.notify = {
.argv = {.args = NULL},
},
+ .notify_focus_inhibit = true,
.tweak = {
.fcft_filter = FCFT_SCALING_FILTER_LANCZOS3,
diff --git a/config.h b/config.h
index 599bc464..66db5d2f 100644
--- a/config.h
+++ b/config.h
@@ -238,6 +238,7 @@ struct config {
} selection_target;
struct config_spawn_template notify;
+ bool notify_focus_inhibit;
struct {
enum fcft_scaling_filter fcft_filter;
diff --git a/doc/foot.ini.5.scd b/doc/foot.ini.5.scd
index 6bc93cc4..26116d62 100644
--- a/doc/foot.ini.5.scd
+++ b/doc/foot.ini.5.scd
@@ -279,11 +279,17 @@ in this order:
- OSC 777: *\\e]777;notify;
;\\e\\\\*
- Notifications are *inhibited* if the foot window has keyboard
- focus.
+ By default, notifications are *inhibited* if the foot window
+ has keyboard focus. See _notify-focus-inhibit_.
Default: _notify-send -a ${app-id} -i ${app-id} ${title} ${body}_.
+*notify-focus-inhibit*
+ Boolean. If enabled, foot will not display notifications if the
+ terminal window has keyboard focus.
+
+ Default: _yes_
+
*selection-target*
Clipboard target to automatically copy selected text to. One of
*none*, *primary*, *clipboard* or *both*. Default: _primary_.
@@ -316,8 +322,10 @@ in this order:
*notify*
When set to _yes_, foot will emit a desktop notification using
the command specified in the *notify* option whenever *BEL* is
- received and the window does *not* have keyboard focus. Default:
- _no_
+ received. By default, bell notifications are shown only when the
+ window does *not* have keyboard focus. See _notify-focus-inhibit_.
+
+ Default: _no_
*command*
When set, foot will execute this command when *BEL* is received.
diff --git a/notify.c b/notify.c
index a90cd317..13cee895 100644
--- a/notify.c
+++ b/notify.c
@@ -19,7 +19,7 @@ notify_notify(const struct terminal *term, const char *title, const char *body)
{
LOG_DBG("notify: title=\"%s\", msg=\"%s\"", title, body);
- if (term->kbd_focus) {
+ if (term->conf->notify_focus_inhibit && term->kbd_focus) {
/* No notifications while we’re focused */
return;
}
diff --git a/terminal.c b/terminal.c
index 2738291d..0f5b4b62 100644
--- a/terminal.c
+++ b/terminal.c
@@ -3081,11 +3081,11 @@ term_bell(struct terminal *term)
term_damage_margins(term);
}
}
-
- if (term->conf->bell.notify)
- notify_notify(term, "Bell", "Bell in terminal");
}
+ if (term->conf->bell.notify)
+ notify_notify(term, "Bell", "Bell in terminal");
+
if ((term->conf->bell.command.argv.args != NULL) &&
(!term->kbd_focus || term->conf->bell.command_focused))
{