mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-04 04:06:06 -05:00
notify: add the notify-focus-inhibit config option
foot doesn't show desktop notifications (via OSC777) if the current terminal has keyboard focus. This is probably a sane default, but there are use cases where showing a notification regardless of the focus status may be desired. For example, a completion notification of a long running task inside a non-focused tmux window. This PR adds the notify-focus-inhibit option which can be used to disable inhibition of notifications when the window has focus. The default value is `yes`, which retains the old behavior.
This commit is contained in:
parent
b1c03861cd
commit
729f7466ae
6 changed files with 27 additions and 8 deletions
|
|
@ -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
|
||||
|
|
|
|||
5
config.c
5
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,
|
||||
|
|
|
|||
1
config.h
1
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;
|
||||
|
|
|
|||
|
|
@ -279,11 +279,17 @@ in this order:
|
|||
|
||||
- OSC 777: *\\e]777;notify;<title>;<body>\\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.
|
||||
|
|
|
|||
2
notify.c
2
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue