aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2009-07-10 05:50:54 +0000
committerNicholas Marriott <nicm@openbsd.org>2009-07-10 05:50:54 +0000
commitdaa1faa90510c09ddface800101ea86b167d1154 (patch)
tree77731d240614832e1d58ee1b31c491b60f9b9aa9
parent25d57344966902e9d5a93eb46727a2f1ebd46a82 (diff)
downloadrtmux-daa1faa90510c09ddface800101ea86b167d1154.tar.gz
rtmux-daa1faa90510c09ddface800101ea86b167d1154.tar.bz2
rtmux-daa1faa90510c09ddface800101ea86b167d1154.zip
Add a default-terminal option to set the starting value of $TERM in new
windows. This is "screen" by default and must be either that or something closely related. This does makes it easier to customise it if necessary.
-rw-r--r--cmd-set-option.c1
-rw-r--r--server-fn.c8
-rw-r--r--tmux.112
-rw-r--r--tmux.c1
-rw-r--r--tmux.h2
5 files changed, 21 insertions, 3 deletions
diff --git a/cmd-set-option.c b/cmd-set-option.c
index 9befb085..88e297b0 100644
--- a/cmd-set-option.c
+++ b/cmd-set-option.c
@@ -53,6 +53,7 @@ const struct set_option_entry set_option_table[NSETOPTION] = {
{ "buffer-limit", SET_OPTION_NUMBER, 1, INT_MAX, NULL },
{ "default-command", SET_OPTION_STRING, 0, 0, NULL },
{ "default-path", SET_OPTION_STRING, 0, 0, NULL },
+ { "default-terminal", SET_OPTION_STRING, 0, 0, NULL },
{ "display-time", SET_OPTION_NUMBER, 1, INT_MAX, NULL },
{ "history-limit", SET_OPTION_NUMBER, 0, INT_MAX, NULL },
{ "lock-after-time", SET_OPTION_NUMBER, 0, INT_MAX, NULL },
diff --git a/server-fn.c b/server-fn.c
index fb40a624..2d6709f5 100644
--- a/server-fn.c
+++ b/server-fn.c
@@ -29,8 +29,8 @@ int server_lock_callback(void *, const char *);
const char **
server_fill_environ(struct session *s)
{
- static const char *env[] = { NULL /* TMUX= */, "TERM=screen", NULL };
- static char tmuxvar[MAXPATHLEN + 256];
+ static const char *env[] = { NULL /* TMUX= */, NULL /* TERM */, NULL };
+ static char tmuxvar[MAXPATHLEN + 256], termvar[256];
u_int idx;
if (session_index(s, &idx) != 0)
@@ -40,6 +40,10 @@ server_fill_environ(struct session *s)
"TMUX=%s,%ld,%u", socket_path, (long) getpid(), idx);
env[0] = tmuxvar;
+ xsnprintf(termvar, sizeof termvar,
+ "TERM=%s", options_get_string(&s->options, "default-terminal"));
+ env[1] = termvar;
+
return (env);
}
diff --git a/tmux.1 b/tmux.1
index 9a02ee47..db292b16 100644
--- a/tmux.1
+++ b/tmux.1
@@ -1090,6 +1090,18 @@ environment variable or, if it is unset, the user's shell returned by
Set the default working directory for processes created from keys, or
interactively from the prompt.
The default is the current working directory when the server is started.
+.It Ic default-terminal Ar terminal
+Set the default terminal for new windows created in this session - the
+default value of the
+.Ev TERM
+environment variable.
+For
+.Nm
+to work correctly, this
+.Em must
+be set to
+.Ql screen
+or a derivative of it.
.It Ic display-time Ar time
Set the amount of time for which status line messages are displayed.
.Ar time
diff --git a/tmux.c b/tmux.c
index c71c7264..a2f6e73b 100644
--- a/tmux.c
+++ b/tmux.c
@@ -270,6 +270,7 @@ main(int argc, char **argv)
options_set_number(&global_s_options, "bell-action", BELL_ANY);
options_set_number(&global_s_options, "buffer-limit", 9);
options_set_string(&global_s_options, "default-command", "%s", "");
+ options_set_string(&global_s_options, "default-terminal", "screen");
options_set_number(&global_s_options, "display-time", 750);
options_set_number(&global_s_options, "history-limit", 2000);
options_set_number(&global_s_options, "lock-after-time", 0);
diff --git a/tmux.h b/tmux.h
index 9df75e2c..a2d3063d 100644
--- a/tmux.h
+++ b/tmux.h
@@ -935,7 +935,7 @@ struct set_option_entry {
};
extern const struct set_option_entry set_option_table[];
extern const struct set_option_entry set_window_option_table[];
-#define NSETOPTION 25
+#define NSETOPTION 26
#define NSETWINDOWOPTION 19
/* tmux.c */