terminal-util: don't issue "ESC c" sequence on reset, but only when erasing the screen
ESC c is a (vaguely defined) "reset to initial state" ANSI sequence.
Many terminals clear the screen in this case, but that's a bit drastic I
think for most resets.
ESC c was added to the reset logic in
00bc83a275 (i.e. very recently), and I
don't think the effect was clear at that time.
Let's keep the ESC c in place however when we actually want to clear the
screen. Hence move it from reset_terminal_fd() into vt_disallocate().
Fixes: #33689
This commit is contained in:
@@ -578,8 +578,9 @@ int vt_disallocate(const char *name) {
|
||||
(void) loop_write(fd2,
|
||||
"\033[r" /* clear scrolling region */
|
||||
"\033[H" /* move home */
|
||||
"\033[3J", /* clear screen including scrollback, requires Linux 2.6.40 */
|
||||
10);
|
||||
"\033[3J" /* clear screen including scrollback, requires Linux 2.6.40 */
|
||||
"\033c", /* reset to initial state */
|
||||
SIZE_MAX);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1557,7 +1558,6 @@ int terminal_reset_ansi_seq(int fd) {
|
||||
return log_debug_errno(r, "Failed to set terminal to non-blocking mode: %m");
|
||||
|
||||
k = loop_write_full(fd,
|
||||
"\033c" /* reset to initial state */
|
||||
"\033[!p" /* soft terminal reset */
|
||||
"\033]104\007" /* reset colors */
|
||||
"\033[?7h", /* enable line-wrapping */
|
||||
|
||||
Reference in New Issue
Block a user