terminal-util: during terminal reset clear from beginning of line to end of screen

tianocore does some weird shit with its terminal emulation and regular
fills half the terminal with grey background and then invokes us with
this not cleared up. Hence let us clear this up for it: as part of the
ansi sequence based reset let's position the cursor explicitly at the
beginning of the current line, and erase everything till the end of the
screen. This makes boot output in tianocore vms much much cleaner.

Note that this does *not* erase any terminal output *before* the cursor
position where we take over, because that typically contains valuable
information still we should not erase.
This commit is contained in:
Lennart Poettering
2025-03-06 16:07:02 +01:00
committed by Luca Boccassi
parent 4d44670dc6
commit 4efd46c44b

View File

@@ -974,7 +974,9 @@ static int terminal_reset_ansi_seq(int fd) {
k = loop_write_full(fd,
"\033[!p" /* soft terminal reset */
"\033]104\007" /* reset colors */
"\033[?7h", /* enable line-wrapping */
"\033[?7h" /* enable line-wrapping */
"\033[1G" /* place cursor at beginning of current line */
"\033[0J", /* erase till end of screen */
SIZE_MAX,
100 * USEC_PER_MSEC);
if (k < 0)