summaryrefslogtreecommitdiff
path: root/src/fe-text
diff options
context:
space:
mode:
authorailin-nemui <ailin-nemui@users.noreply.github.com>2018-01-08 12:19:30 +0100
committerGitHub <noreply@github.com>2018-01-08 12:19:30 +0100
commit2e0815bfd76fae223131ec27f844e10dbbab5075 (patch)
treef9f6f202217a6141ff5ac6f84ffc886060e0801b /src/fe-text
parentd85f86726115a2f80d878254dd9773470d6dd9c1 (diff)
parent063c85da6c4e73a292525aa01b5cad70ed6bf82b (diff)
downloadirssi-2e0815bfd76fae223131ec27f844e10dbbab5075.zip
Merge pull request #726 from dequis/term-environment-check
Add a startup warning if the TERM var is wrong inside tmux/screen
Diffstat (limited to 'src/fe-text')
-rw-r--r--src/fe-text/irssi.c2
-rw-r--r--src/fe-text/term-terminfo.c28
-rw-r--r--src/fe-text/term.h2
3 files changed, 32 insertions, 0 deletions
diff --git a/src/fe-text/irssi.c b/src/fe-text/irssi.c
index ef443670..0288e4f1 100644
--- a/src/fe-text/irssi.c
+++ b/src/fe-text/irssi.c
@@ -207,6 +207,8 @@ static void textui_finish_init(void)
fe_settings_set_print("nick");
if (user_settings_changed & USER_SETTINGS_HOSTNAME)
fe_settings_set_print("hostname");
+
+ term_environment_check();
}
static void textui_deinit(void)
diff --git a/src/fe-text/term-terminfo.c b/src/fe-text/term-terminfo.c
index 6645cfb0..ba8bdcaf 100644
--- a/src/fe-text/term-terminfo.c
+++ b/src/fe-text/term-terminfo.c
@@ -733,3 +733,31 @@ void term_gets(GArray *buffer, int *line_count)
}
}
}
+
+static const char* term_env_warning =
+ "You seem to be running Irssi inside %2$s, but the TERM environment variable "
+ "is set to '%1$s', which can cause display glitches.\n"
+ "Consider changing TERM to '%2$s' or '%2$s-256color' instead.";
+
+void term_environment_check(void)
+{
+ const char *term, *sty, *tmux, *multiplexer;
+
+ term = g_getenv("TERM");
+ sty = g_getenv("STY");
+ tmux = g_getenv("TMUX");
+
+ multiplexer = (sty && *sty) ? "screen" :
+ (tmux && *tmux) ? "tmux" : NULL;
+
+ if (!multiplexer) {
+ return;
+ }
+
+ if (term && (g_str_has_prefix(term, "screen") ||
+ g_str_has_prefix(term, "tmux"))) {
+ return;
+ }
+
+ g_warning(term_env_warning, term, multiplexer);
+}
diff --git a/src/fe-text/term.h b/src/fe-text/term.h
index 0c7847f6..4b1e2874 100644
--- a/src/fe-text/term.h
+++ b/src/fe-text/term.h
@@ -105,4 +105,6 @@ void term_gets(GArray *buffer, int *line_count);
void term_common_init(void);
void term_common_deinit(void);
+void term_environment_check(void);
+
#endif