diff --git a/csi.c b/csi.c index dd292b79..57da1c06 100644 --- a/csi.c +++ b/csi.c @@ -567,7 +567,7 @@ csi_dispatch(struct terminal *term, uint8_t final) break; case 25: - LOG_WARN("unimplemented: civis"); + term->hide_cursor = false; break; case 1000: @@ -625,7 +625,7 @@ csi_dispatch(struct terminal *term, uint8_t final) break; case 25: - LOG_WARN("unimplemented: civis"); + term->hide_cursor = true; break; case 1000: diff --git a/main.c b/main.c index 460f36e4..a29f5d8c 100644 --- a/main.c +++ b/main.c @@ -134,7 +134,8 @@ grid_render_update(struct context *c, struct buffer *buf, const struct damage *d /* Cursor here? */ bool has_cursor - = c->term.cursor.linear == linear_cursor - c->term.grid->offset; + = (!c->term.hide_cursor && + (c->term.cursor.linear == linear_cursor - c->term.grid->offset)); int x = col * c->term.cell_width; int y = row * c->term.cell_height; diff --git a/terminal.h b/terminal.h index 66f6bde0..a96b1b70 100644 --- a/terminal.h +++ b/terminal.h @@ -131,6 +131,7 @@ struct terminal { pid_t slave; int ptmx; + bool hide_cursor; enum decckm decckm; enum keypad_mode keypad_mode; bool bracketed_paste;