summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm>2024-04-10 07:36:25 +0000
committernicm <nicm>2024-04-10 07:36:25 +0000
commit553d4cba794b4f81dd42ba139f8dfb54fcd13c16 (patch)
tree0a3f3b1a5ed2b3122bf307b1862ac449d8fe603c
parentc62a9ca16b8fa199904c7628f0cb95c50593af6f (diff)
Add an option allow-set-title to forbid applications from changing the
pane title, from someone in GitHub issue 3930.
-rw-r--r--input.c4
-rw-r--r--options-table.c8
-rw-r--r--tmux.16
-rw-r--r--tmux.h2
4 files changed, 18 insertions, 2 deletions
diff --git a/input.c b/input.c
index b833b50e..2ae4b89a 100644
--- a/input.c
+++ b/input.c
@@ -2341,7 +2341,9 @@ input_exit_osc(struct input_ctx *ictx)
switch (option) {
case 0:
case 2:
- if (screen_set_title(sctx->s, p) && wp != NULL) {
+ if (wp != NULL &&
+ options_get_number(wp->options, "allow-set-title") &&
+ screen_set_title(sctx->s, p)) {
notify_pane("pane-title-changed", wp);
server_redraw_window_borders(wp->window);
server_status_window(wp->window);
diff --git a/options-table.c b/options-table.c
index 8187ad08..fe460473 100644
--- a/options-table.c
+++ b/options-table.c
@@ -876,6 +876,14 @@ const struct options_table_entry options_table[] = {
"to rename windows."
},
+ { .name = "allow-set-title",
+ .type = OPTIONS_TABLE_FLAG,
+ .scope = OPTIONS_TABLE_WINDOW|OPTIONS_TABLE_PANE,
+ .default_num = 1,
+ .text = "Whether applications are allowed to use the escape sequence "
+ "to set the pane title."
+ },
+
{ .name = "alternate-screen",
.type = OPTIONS_TABLE_FLAG,
.scope = OPTIONS_TABLE_WINDOW|OPTIONS_TABLE_PANE,
diff --git a/tmux.1 b/tmux.1
index 186ffee0..a5102216 100644
--- a/tmux.1
+++ b/tmux.1
@@ -4750,6 +4750,12 @@ they will be allowed even if the pane is invisible.
Allow programs in the pane to change the window name using a terminal escape
sequence (\eek...\ee\e\e).
.Pp
+.It Xo Ic allow-set-title
+.Op Ic on | off
+.Xc
+Allow programs in the pane to change the title using the terminal escape
+sequences (\ee]2;...\ee\e\e or \ee]0;...\ee\e\e).
+.Pp
.It Xo Ic alternate-screen
.Op Ic on | off
.Xc
diff --git a/tmux.h b/tmux.h
index f61d1032..469d7f1c 100644
--- a/tmux.h
+++ b/tmux.h
@@ -850,7 +850,7 @@ struct screen_sel;
struct screen_titles;
struct screen {
char *title;
- char *path;
+ char *path;
struct screen_titles *titles;
struct grid *grid; /* grid data */