From 6499e884851d0a5df1518a33743d0dc303734237 Mon Sep 17 00:00:00 2001 From: a Date: Mon, 7 Sep 2026 03:11:27 -0500 Subject: [PATCH] Scrub multiplexer variables from the child environment A new st window is never inside tmux/screen/zellij, even when st was launched from one. Programs like kitten icat check TMUX to decide whether to wrap escape codes in a DCS passthrough, which then fails because st is not tmux. --- st.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/st.c b/st.c index b74c90d..e1eab16 100644 --- a/st.c +++ b/st.c @@ -909,6 +909,16 @@ execsh(char *cmd, char **args) unsetenv("COLUMNS"); unsetenv("LINES"); unsetenv("TERMCAP"); + /* + * A new st window is never inside a multiplexer, even when st itself + * was launched from one. Programs such as kitten icat use these to + * decide whether to wrap escape codes for tmux, which breaks them. + */ + unsetenv("TMUX"); + unsetenv("TMUX_PANE"); + unsetenv("STY"); + unsetenv("ZELLIJ"); + unsetenv("ZELLIJ_SESSION_NAME"); setenv("LOGNAME", pw->pw_name, 1); setenv("USER", pw->pw_name, 1); setenv("SHELL", sh, 1);