У мене була схожа проблема. У моїй ситуації налаштування DISPLAY
було недостатньо. За замовчуванням деяке середовище встановлюється при запуску сервера tmux (при запуску першого сеансу), а не будь-який новий сеанс. Наступне працює для мене, але я сумніваюся, що це оптимально.
У .tmux.conf
змушуйте tmux запам’ятати змінні, які ви хочете зберегти від зовнішнього середовища. Я використовував ті, які відрізнялися між локальним використанням терміналу Gnome та віддаленим використанням Terminal.app. Деякі з них, мабуть, не потрібні, але я не знаю, які. -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
гачках не була моєю власною, але я забуваю, де я це бачив. Дякую тому, хто це написав, де б ви це не написали.