patch 8.0.0918: cannot get terminal window cursor shape or attributes
Problem: Cannot get terminal window cursor shape or attributes.
Solution: Support cursor shape, attributes and color.
diff --git a/src/libvterm/include/vterm.h b/src/libvterm/include/vterm.h
index cd7b1f7..50a840a 100644
--- a/src/libvterm/include/vterm.h
+++ b/src/libvterm/include/vterm.h
@@ -120,7 +120,8 @@
VTERM_PROP_ICONNAME, /* string */
VTERM_PROP_REVERSE, /* bool */
VTERM_PROP_CURSORSHAPE, /* number */
- VTERM_PROP_MOUSE /* number */
+ VTERM_PROP_MOUSE, /* number */
+ VTERM_PROP_CURSORCOLOR /* string */
} VTermProp;
enum {
diff --git a/src/libvterm/src/state.c b/src/libvterm/src/state.c
index 8f8909e..88c259c 100644
--- a/src/libvterm/src/state.c
+++ b/src/libvterm/src/state.c
@@ -1504,6 +1504,10 @@
settermprop_string(state, VTERM_PROP_TITLE, command + 2, cmdlen - 2);
return 1;
}
+ else if(strneq(command, "12;", 3)) {
+ settermprop_string(state, VTERM_PROP_CURSORCOLOR, command + 3, cmdlen - 3);
+ return 1;
+ }
else if(state->fallbacks && state->fallbacks->osc)
if((*state->fallbacks->osc)(command, cmdlen, state->fbdata))
return 1;
@@ -1819,6 +1823,7 @@
switch(prop) {
case VTERM_PROP_TITLE:
case VTERM_PROP_ICONNAME:
+ case VTERM_PROP_CURSORCOLOR:
/* we don't store these, just transparently pass through */
return 1;
case VTERM_PROP_CURSORVISIBLE:
diff --git a/src/libvterm/src/vterm.c b/src/libvterm/src/vterm.c
index 2931e52..b2a7240 100644
--- a/src/libvterm/src/vterm.c
+++ b/src/libvterm/src/vterm.c
@@ -294,6 +294,7 @@
case VTERM_PROP_REVERSE: return VTERM_VALUETYPE_BOOL;
case VTERM_PROP_CURSORSHAPE: return VTERM_VALUETYPE_INT;
case VTERM_PROP_MOUSE: return VTERM_VALUETYPE_INT;
+ case VTERM_PROP_CURSORCOLOR: return VTERM_VALUETYPE_STRING;
}
return 0; /* UNREACHABLE */
}