Ich hatte ein ähnliches Problem. In meiner Situation war die Einstellung DISPLAY
nicht genug. Standardmäßig wird ein Teil der Umgebung beim Starten des tmux-Servers (beim Starten der ersten Sitzung) festgelegt, nicht nur eine neue Sitzung. Das Folgende funktioniert für mich, aber ich bezweifle, dass es optimal ist.
In .tmux.conf
machen die Variablen tmux daran erinnern , dass Sie von der äußeren Umgebung halten wollen. Ich habe solche verwendet, die sich zwischen der lokalen Verwendung von Gnome Terminal und der Remote-Verwendung von Terminal.app unterschieden. Einige von ihnen sind wahrscheinlich nicht notwendig, aber ich bin mir nicht sicher, welche. Die -g
Flagge ist möglicherweise nicht korrekt.
set -g update-environment "\
CLUTTER_IM_MODULE \
DBUS_SESSION_BUS_ADDRESS \
DBUS_SESSION_BUS_ADDRESS \
DEFAULTS_PATH \
DESKTOP_AUTOSTART_ID \
DESKTOP_SESSION \
DISPLAY \
GDMSESSION \
GNOME_DESKTOP_SESSION_ID \
GPG_AGENT_INFO \
GTK_IM_MODULE \
GTK_MODULES \
SESSION_MANAGER \
SSH_AGENT_PID \
SSH_ASKPASS \
SSH_AUTH_SOCK \
SSH_CONNECTION \
WINDOWID \
WINDOWPATH \
XAUTHORITY \
XDG_CONFIG_DIRS \
XDG_CURRENT_DESKTOP \
XDG_DATA_DIRS \
XDG_MENU_PREFIX \
XDG_RUNTIME_DIR \
XDG_SEAT \
XDG_SESSION_DESKTOP \
XDG_SESSION_ID \
XDG_SESSION_TYPE \
XDG_VTNR \
XMODIFIERS \
"
Trotz des Namens "Update-Umgebung" scheint die Einstellung die Umgebung nicht wirklich zu verändern. Sie können es jedoch mit abrufen tmux show-environment
. Also habe ich es verwendet, um die Umgebung in meinem zu aktualisieren .zshrc
:
zshrc_restore_x11_vars()
{
if [[ -z $TMUX ]]
then
return 0
fi
local tmux_env="$(tmux show-environment)"
for var_line in ${(f)tmux_env}
do
if [[ $var_line == -[A-Za-z_]* ]]
then
local var=${var_line#-}
unset $var
elif [[ $var_line == [A-Za-z_]*'='* ]]
then
export $var_line
fi
done
}
precmd()
{
zshrc_restore_x11_vars
}
preexec()
{
zshrc_restore_x11_vars
}
Verwenden tmux show-environment -s
wäre wahrscheinlich besser gewesen. Aber das wusste ich erst, als ich einen Teil von erneut las man tmux
, um diese Antwort zu schreiben.
Trotzdem muss ich mich manchmal trennen und wieder anbringen, wenn ich eine vorhandene Sitzung verwende. Obwohl es viel weniger nervig ist als zuvor.
Vollständige Offenlegung: Die Idee, tmux show-environment
in den precmd
und preexec
Hooks zu verwenden, war nicht meine eigene, aber ich vergesse, wo ich sie gesehen habe. Vielen Dank an alle, die das geschrieben haben, wo immer Sie es geschrieben haben.