diff options
author | C. McEnroe | 2020-02-02 18:39:08 -0500 |
---|---|---|
committer | C. McEnroe | 2020-02-02 18:40:21 -0500 |
commit | 8ec17d4f8ce2edab30d998d6b279f0e5cd840022 (patch) | |
tree | fe6824bfb005f1826f04fcb06988207ef2e733ee | |
parent | a507ff40732b1f6fe9c5dbc1f1f17ef00bcccf5d (diff) |
Use tsl/fsl capabilities for title if available
Also manually fill them if TERM=xterm* because they really should be there.
-rw-r--r-- | chat.h | 2 | ||||
-rw-r--r-- | term.c | 14 | ||||
-rw-r--r-- | ui.c | 11 |
3 files changed, 9 insertions, 18 deletions
diff --git a/chat.h b/chat.h index f9de779..8a806f1 100644 --- a/chat.h +++ b/chat.h @@ -129,9 +129,7 @@ enum TermEvent { TermPasteStart, TermPasteEnd, }; -void termInit(void); void termNoFlow(void); -void termTitle(const char *title); void termMode(enum TermMode mode, bool set); enum TermEvent termEvent(char ch); diff --git a/term.c b/term.c index bf4a933..427cac6 100644 --- a/term.c +++ b/term.c @@ -17,19 +17,11 @@ #include <stdbool.h> #include <stdio.h> #include <stdlib.h> -#include <string.h> #include <termios.h> #include <unistd.h> #include "chat.h" -static bool xterm; - -void termInit(void) { - const char *term = getenv("TERM"); - xterm = (term && !strncmp(term, "xterm", 5)); -} - void termNoFlow(void) { struct termios attr; int error = tcgetattr(STDIN_FILENO, &attr); @@ -39,12 +31,6 @@ void termNoFlow(void) { tcsetattr(STDIN_FILENO, TCSANOW, &attr); } -void termTitle(const char *title) { - if (!xterm) return; - printf("\33]0;%s\33\\", title); - fflush(stdout); -} - static void privateMode(const char *mode, bool set) { printf("\33[?%s%c", mode, (set ? 'h' : 'l')); fflush(stdout); diff --git a/ui.c b/ui.c index 2d5e454..f434289 100644 --- a/ui.c +++ b/ui.c @@ -24,6 +24,7 @@ #include <stdlib.h> #include <string.h> #include <sysexits.h> +#include <term.h> #include <time.h> #include <wchar.h> #include <wctype.h> @@ -133,11 +134,15 @@ void uiInit(void) { initscr(); cbreak(); noecho(); - termInit(); termNoFlow(); def_prog_mode(); err_set_exit(errExit); colorInit(); + if (!to_status_line && !strncmp(termname(), "xterm", 5)) { + to_status_line = "\33]2;"; + from_status_line = "\7"; + } + status = newwin(1, COLS, 0, 0); input = newpad(1, InputCols); keypad(input, true); @@ -305,7 +310,9 @@ static void statusUpdate(void) { &unread, windows.active->unread ); if (!windows.active->unread) buf[unread] = '\0'; - termTitle(buf); + putp(to_status_line); + putp(buf); + putp(from_status_line); } void uiShowID(size_t id) { |