X11 yönlendirme birden fazla tmux oturumu ile çalışmaz


9

Bir tmuxoturumu yerel olarak başlatır ve açık bırakırsam, sonra uzaktan ssh ve yeni bir tmux oturum başlatırsa (eskisine takılmadan, yeni bir oturum spanking değil) X11 iletme kopmuş gibi görünüyor. Ben benzer bir sorun için bu geçici çözüm denedim screenama boşuna ...

Bir GUI uygulaması (gibi xeyes) başlatmaya çalıştığımda hata mesajı etkisi bir şeydir can't open display: wrong authentication. Aslında ne olduğunu bilmiyorum çünkü bir satır başı çıktısı alıp hata mesajının bir kısmını üzerine yazıyor gibi görünüyor ...

Şimdilik, yeni uzaktan oturumuma başlamadan önce yerel olarak başlattığım tüm tmux oturumlarını geçip elle kapatıyorum. X11 yönlendirmenin karışık yerel / uzak tmuxoturumlarla çalışmasını sağlamanın bir yolu var mı ?

Yanıtlar:


12

Sizin için çalışacağından% 100 emin değilim, ancak bu bağlantı da benim için çalışmadı ve sadece ilk terminalden DISPLAY değişkenini kopyaladım ve export DISPLAY=${copied from outside tmux}hangisinin iyi çalıştığını yazdım - yani

log in ...
echo $DISPLAY # remember this
tmux a
export DISPLAY=${variable from memory}

bu bağlantının işlevi bana tamamen farklı bir EKRAN verdi ki bu işe yaramadı


"Yanlış Kimlik Doğrulama" nedeniyle hala başarısız oldu
mgalgs

teşekkürler, bu bana tdux'dan pdfs'yi xdg-open file.pdf ile açmama izin verdi
pascalwhoop

ssh -YBunun yerine denedin ssh -Xmi?
feedMe

3

Benzer bir sorun yaşadım. Benim durumumda, ayar DISPLAYyeterli değildi. Varsayılan olarak, ortamın bir kısmı yalnızca yeni bir oturumu değil, tmux sunucusunu başlatırken (ilk oturumu başlatırken) ayarlanır. Aşağıdakiler benim için işe yarıyor, ama bunun en uygun olduğundan şüpheliyim.

İçinde .tmux.conf, tmux'u dış ortamdan korumak istediğiniz değişkenleri hatırlayın. Yerel olarak Gnome Terminali ile uzaktan Terminal.app kullanarak farklı olanları kullandım. Bazıları muhtemelen gerekli değildir, ama hangisinden emin değilim. -gBayrak doğru olmayabilir.

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 \
  "

"Güncelleme ortamı" adına rağmen, ayar aslında ortamı değiştirmiyor gibi görünüyor. Ancak bunu kullanarak geri alabilirsiniz tmux show-environment. Bu yüzden benim ortamımı güncellemek için kullandım .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 -sMuhtemelen kullanmak daha iyi olurdu. Ama man tmuxbu cevabı yazmak için bir kısmını tekrar okuyana kadar bunu bilmiyordum .

Yine de, mevcut bir oturumu kullanırken bazen ayırmak ve yeniden bağlamak zorundayım. Her ne kadar öncekinden daha az can sıkıcı olsa da.

Tam açıklama: kullanma fikri tmux show-environmentde precmdve preexeckancalar kendi değildi, ama onu nerede gördüğünü unutuyorum. Bunu kim yazmış olursa olsun, nerede yazmış olursanız olun teşekkür ederim.


Kabuk betiği olmadan benim için çalıştı. Çok memnun oldum.
wbg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.