diff --git a/kittens/tui/loop.py b/kittens/tui/loop.py index 0141b39e7..4195bd7cc 100644 --- a/kittens/tui/loop.py +++ b/kittens/tui/loop.py @@ -275,7 +275,10 @@ class Loop: handler.write_buf[self.iov_limit - 1] = b''.join(handler.write_buf[self.iov_limit - 1:]) del handler.write_buf[self.iov_limit:] sizes = tuple(map(len, handler.write_buf)) - written = os.writev(fd, handler.write_buf) + try: + written = os.writev(fd, handler.write_buf) + except BlockingIOError: + return if not written: raise EOFError('The output stream is closed') if written >= sum(sizes): diff --git a/kitty/data-types.c b/kitty/data-types.c index 8ad1d3b06..a74cecd8a 100644 --- a/kitty/data-types.c +++ b/kitty/data-types.c @@ -108,7 +108,7 @@ static inline bool put_tty_in_raw_mode(int fd, const struct termios* termios_p) { struct termios raw_termios = *termios_p; cfmakeraw(&raw_termios); - raw_termios.c_cc[VMIN] = 0; raw_termios.c_cc[VTIME] = 0; + raw_termios.c_cc[VMIN] = 1; raw_termios.c_cc[VTIME] = 0; if (tcsetattr(fd, TCSAFLUSH, &raw_termios) != 0) { PyErr_SetFromErrno(PyExc_OSError); return false; } return true; }