Saya punya masalah serupa. Dalam situasi saya, pengaturan DISPLAY
tidak cukup. Secara default, beberapa lingkungan diatur saat memulai server tmux (saat memulai sesi pertama), bukan sembarang sesi baru. Berikut ini berfungsi untuk saya, tapi saya ragu itu optimal.
Di .tmux.conf
, buat tmux ingat variabel yang ingin Anda simpan dari lingkungan luar. Saya menggunakan yang berbeda secara lokal menggunakan Terminal Gnome dan jarak jauh menggunakan Terminal.app. Beberapa dari mereka mungkin tidak diperlukan, tetapi saya tidak yakin yang mana. The -g
bendera mungkin tidak benar.
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 \
"
Terlepas dari nama "pembaruan-lingkungan", pengaturan tersebut tampaknya tidak benar-benar mengubah lingkungan. Namun, Anda dapat mengambilnya menggunakan tmux show-environment
. Jadi saya menggunakannya untuk memperbarui lingkungan di .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
}
Menggunakan tmux show-environment -s
mungkin akan lebih baik. Tetapi saya tidak tahu tentang itu sampai saya membaca kembali bagian dari man tmux
untuk menulis jawaban ini.
Tetap saja, saya harus melepaskan dan memasang kembali kadang-kadang, ketika menggunakan sesi yang ada. Padahal itu jauh lebih menyebalkan dari sebelumnya.
Pengungkapan penuh: Gagasan menggunakan tmux show-environment
di precmd
dan preexec
kait bukan milik saya, tapi saya lupa di mana saya melihatnya. Terima kasih, kepada siapa pun yang menulis itu, di mana pun Anda menulisnya.