diff options
author | June McEnroe <programble@gmail.com> | 2017-07-16 12:21:13 -0400 |
---|---|---|
committer | June McEnroe <programble@gmail.com> | 2017-07-16 12:21:13 -0400 |
commit | 9fce56ebefa02ca5e310f568dc513d83fa61b6f7 (patch) | |
tree | 45bedc32513dbf241194292cda79ddf0bf517c35 /curtis | |
parent | Sort dtch includes (diff) | |
download | src-9fce56ebefa02ca5e310f568dc513d83fa61b6f7.tar.gz src-9fce56ebefa02ca5e310f568dc513d83fa61b6f7.zip |
Send ^L on attach, rmcup reset on detach
Diffstat (limited to 'curtis')
-rwxr-xr-x | curtis/.bin/dtch.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/curtis/.bin/dtch.c b/curtis/.bin/dtch.c index bed6bc29..ac7164fd 100755 --- a/curtis/.bin/dtch.c +++ b/curtis/.bin/dtch.c @@ -165,6 +165,10 @@ static struct termios saveTerm; static void restoreTerm(void) { tcsetattr(STDERR_FILENO, TCSADRAIN, &saveTerm); + printf( + "\x1b[?1049l" // rmcup + "\x1b\x63\x1b[!p\x1b[?3;4l\x1b[4l\x1b>" // reset + ); } static int atch(int argc, char *argv[]) { @@ -199,14 +203,19 @@ static int atch(int argc, char *argv[]) { error = tcsetattr(STDERR_FILENO, TCSADRAIN, &raw); if (error) err(EX_IOERR, "tcsetattr(%d)", STDERR_FILENO); + char ctrlL = CTRL('L'); + ssize_t len = write(master, &ctrlL, 1); + if (len < 0) err(EX_IOERR, "write(%d)", master); + struct pollfd fds[2] = { { .fd = STDIN_FILENO, .events = POLLIN }, { .fd = master, .events = POLLIN }, }; - char buf[4096]; - ssize_t len; while (0 < poll(fds, 2, -1)) { + char buf[4096]; + ssize_t len; + if (fds[0].revents) { len = read(STDIN_FILENO, buf, sizeof(buf)); if (len < 0) err(EX_IOERR, "read(%d)", STDIN_FILENO); |