csi: add '52' to the DA reply, to indicate PSC-52 support

Note: only *copy* is required to be enabled in security.osc52; paste
is optional, see
https://github.com/contour-terminal/contour/issues/1761#issuecomment-2944492097
This commit is contained in:
Daniel Eklöf 2025-06-09 09:19:07 +02:00
parent 499f019dea
commit 968bc05c32
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 13 additions and 7 deletions

View file

@ -115,6 +115,9 @@
* Drop required version of libxkbcommon from 1.8.0 back to 1.0.0
([#2103][2103]).
* OSC-52: an empty payload now clears the clipboard.
* DA (Device Attributes): include `52` in the reply, to indicate
OSC-52 support (when at least _copy_ has been enabled in
`security.osc52`).
[1846]: https://codeberg.org/dnkl/foot/issues/1846
[2103]: https://codeberg.org/dnkl/foot/issues/2103

17
csi.c
View file

@ -850,6 +850,7 @@ csi_dispatch(struct terminal *term, uint8_t final)
* - 22 ANSI color, e.g., VT525.
* - 28 Rectangular editing.
* - 29 ANSI text locator (i.e., DEC Locator mode).
* - 52 Clipboard access
*
* Note: we report ourselves as a VT220, mainly to be able
* to pass parameters, to indicate we support sixel, and
@ -860,13 +861,15 @@ csi_dispatch(struct terminal *term, uint8_t final)
*
* Note: tertiary DA responds with "FOOT".
*/
if (term->conf->tweak.sixel) {
static const char reply[] = "\033[?62;4;22;28c";
term_to_slave(term, reply, sizeof(reply) - 1);
} else {
static const char reply[] = "\033[?62;22;28c";
term_to_slave(term, reply, sizeof(reply) - 1);
}
char reply[32];
int len = snprintf(
reply, sizeof(reply), "\033[?62%s;22;28%sc",
term->conf->tweak.sixel ? ";4" : "",
(term->conf->security.osc52 == OSC52_ENABLED ||
term->conf->security.osc52 == OSC52_COPY_ENABLED ? ";52" : ""));
term_to_slave(term, reply, len);
break;
}