osc: implement urxvt’s “OSC 777;notify”

OSC 777 is URxvt’s generic escape to send commands to its perl
extensions. The first parameter is the name of the extension, followed
by its arguments.

OSC 777;notify is a, if not well established, at least a fairly well
known escape sequence to request a (desktop) notification. The syntax
is:

  \e]777;notify;<title>;<body>\e\\

Neither title nor body is escaped in any way, meaning they should not
contain a ‘;’.

Foot will split title from body at the *first* ‘;’. Any remaining ‘;’
characters are treated as part of ‘body’.

Instead of adding built-in support for the freedesktop notification
specification (which would require us to link against at least dbus),
add a new config option to foot.ini: ‘notify’.

This option specifies the command to execute when a notification is
received. ‘${title}’ and ‘${body}’ can be used anywhere, in any
combination, and as many times as you want, in any of the command
arguments.

The default value is ‘notify-send -a foot -i foot ${title} ${body}’
This commit is contained in:
Daniel Eklöf 2020-12-08 19:19:55 +01:00
parent 3e25faeae7
commit 21cc68d49e
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
6 changed files with 184 additions and 12 deletions

View file

@ -86,6 +86,9 @@ means foot can be PGO:d in e.g. sandboxed build scripts. See
* `DECSET` escape to modify the `escape` key to send `\E[27;1;27~`
instead of `\E`: `CSI ? 27127 h` enables the new behavior, `CSI ?
27127 l` disables it (the default).
* OSC 777;notify: desktop notifications. Use in combination with the
new **notify** option in `foot.ini`
(https://codeberg.org/dnkl/foot/issues/224).
### Changed