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
    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
  • 1
    @Mehrdad sadly this doesn't do all the reset. If you ctrl+C out of a password prompt for pkcon (or other polkit prompt), none of what you type shows on the screen. I expect it fixes the other condition where you cat a binary file and your prompt turns into alien writing though.
    – sourcejedi
    Jan 8 '17 at 9:06
  • 4
    @Mehrdad stty sane appears to fix the first condition, without any delay.
    – sourcejedi
    Jan 8 '17 at 9:08
  • 1
    The release (6.0) of ncurses doesn't modify terminal modes (as "reset" or "stty sane" does). currrent ncurses "tput reset" does all but the delay. For OpenBSD... wait 10 years. Jan 8 '17 at 11:26

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.