diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ad10db9..3ec5ccb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -301,6 +301,9 @@ (https://codeberg.org/dnkl/foot/issues/395). * Completions for Bash shell (https://codeberg.org/dnkl/foot/issues/10). +* Implement `XTVERSION` (`CSI > 0q`). Foot will reply with + `DCS>|foot(..)ST` + (https://codeberg.org/dnkl/foot/issues/359). ### Changed diff --git a/csi.c b/csi.c index 2d497636..fcc2800f 100644 --- a/csi.c +++ b/csi.c @@ -1565,6 +1565,22 @@ csi_dispatch(struct terminal *term, uint8_t final) } break; /* final == 'm' */ + case 'q': { + /* XTVERSION */ + if (vt_param_get(term, 0, 0) != 0) { + UNHANDLED(); + break; + } + + char reply[64]; + size_t n = xsnprintf( + reply, sizeof(reply), "\033P>|foot(%u.%u.%u%s%s)\033\\", + FOOT_MAJOR, FOOT_MINOR, FOOT_PATCH, + FOOT_EXTRA[0] != '\0' ? "-" : "", FOOT_EXTRA); + term_to_slave(term, reply, n); + break; + } + default: UNHANDLED(); break;