The reset command includes a delay, between clearing the screen and returning. This is even on the latest terminal type xterm-256color. Why?

man reset does not mention a delay, only the printing of special strings. (It doesn't mention clearing the screen either. I assume this is included under the terminal initialization string).

I notice the follow output in strace -f reset:

nanosleep({tv_sec=1, tv_nsec=0}, 0x7ffe1964f100) = 0
ioctl(2, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon echo ...}) = 0

Real (hardware) terminals need that. For instance, with some, the only way to reset them is to do a hardware-reset.

It's harmless with a terminal emulator, and since there's no conventional way to tell the difference (and too hard to determine if some escape sequence might do a hardware-reset), reset assumes your terminal is real.

The time-delay dates back to tset in 3BSD in 1979, like this:

    /* output startup string */
    if (!RepOnly && !NoInit)
            bufp = buf;
            if (tgetstr("is", &bufp) != 0)
            bufp = buf;
            if (tgetstr("if", &bufp) != 0)
            sleep(1);       /* let terminal settle down */

It's evolved somewhat in ncurses, but using the same guideline:

        if (!noinit) {
            if (send_init_strings(my_fd, &oldmode)) {
                (void) putc('\r', stderr);
                (void) fflush(stderr);
                (void) napms(1000);         /* Settle the terminal. */

Further reading:

  • 1
    In the OpenBSD code, the 1000 ms wait (through calling napms(1000)) is accompanied by the comment /* Settle the terminal. */ – Kusalananda Jan 7 '17 at 20:48
  • 2
    OpenBSD uses ncurses. – Thomas Dickey Jan 7 '17 at 20:49
  • 1
    While we're here could you explain how to remove the delay if possible? – user541686 Jan 8 '17 at 3:02
  • 7
    @Mehrdad You could try tput reset. It doesn't seem to use the delay. – Ross Ridge Jan 8 '17 at 6:40
  • 3
    @Mehrdad stty sane appears to fix the first condition, without any delay. – sourcejedi Jan 8 '17 at 9:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.