у меня была похожая проблема. В моей ситуации установка DISPLAY
не хватает. По умолчанию некоторые параметры среды задаются при запуске сервера tmux (при запуске первого сеанса), а не только нового сеанса. Следующие работы для меня, но я сомневаюсь, что это оптимально.
In .tmux.conf
, сделайте tmux запоминающим переменные, которые вы хотите сохранить из внешней среды. Я использовал те, которые отличались локально с помощью терминала Gnome и удаленно с помощью терминала.приложение. Некоторые из их возможно, в этом нет необходимости, но я не уверен, что именно. The -g
флаг может быть неправильным.
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 \
"
несмотря на название "update-environment", настройка, похоже, на самом деле не изменяет среду. Вы можете, однако, получить его с помощью tmux show-environment
. Поэтому я использовал его, чтобы обновить среду в моем .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
}
используя tmux show-environment -s
наверное, было бы лучше. Но я не знал об этом, пока не перечитал часть man tmux
чтобы написать этот ответ.
тем не менее, иногда мне приходится отсоединяться и присоединяться при использовании существующего сеанса. Хотя это гораздо менее раздражает, чем раньше.
полное раскрытие: идея использовать tmux show-environment
наprecmd
и preexec
крючки были не мои, но я забыл, где я их видел. Спасибо, тому, кто это написал, тому, кто это написал.