ptyfwd: when leaving a session with tinted background, clear to end of screen

So if we tint the background of a ptyfwd session with a color and the
session ends, then so far we reset the bg color and clear till the end
of line.

Let's instead clear till the end of the screen. This is nicer since it
means that any follow-up output will not be affected by the changed
background color anymore.
This commit is contained in:
Lennart Poettering 2024-01-19 23:39:13 +01:00 committed by Luca Boccassi
parent 87da1af78f
commit e4924fb0d1
2 changed files with 4 additions and 1 deletions

View file

@ -80,6 +80,9 @@
/* Erase characters until the end of the line */
#define ANSI_ERASE_TO_END_OF_LINE "\x1B[K"
/* Erase characters until end of screen */
#define ANSI_ERASE_TO_END_OF_SCREEN "\x1B[J"
/* Move cursor up one line */
#define ANSI_REVERSE_LINEFEED "\x1BM"

View file

@ -115,7 +115,7 @@ static void pty_forward_disconnect(PTYForward *f) {
(void) fd_nonblock(f->output_fd, false);
if (colors_enabled())
(void) loop_write(f->output_fd, ANSI_NORMAL ANSI_ERASE_TO_END_OF_LINE, SIZE_MAX);
(void) loop_write(f->output_fd, ANSI_NORMAL ANSI_ERASE_TO_END_OF_SCREEN, SIZE_MAX);
if (f->close_output_fd)
f->output_fd = safe_close(f->output_fd);