Penerusan X11 tidak berfungsi dengan beberapa sesi tmux


9

Jika saya memulai tmuxsesi secara lokal dan membiarkannya terbuka, kemudian ssh di jarak jauh dan memulai sesi baru tmux (tidak melampirkan yang lama, sesi baru yang memukul merek) Penerusan X11 tampaknya rusak. Saya sudah mencoba solusi ini untuk masalah serupa dengan screentetapi tidak berhasil ...

Pesan kesalahan ketika saya mencoba untuk meluncurkan aplikasi GUI (seperti xeyes) adalah sesuatu untuk efek can't open display: wrong authentication. Saya sebenarnya tidak tahu apa itu pasti karena sepertinya mengeluarkan carriage return dan menimpa bagian dari pesan kesalahan dengan yang baru ...

Untuk saat ini saya baru saja melalui dan menutup secara manual semua sesi tmux yang telah saya mulai secara lokal sebelum memulai sesi remote baru saya. Apakah ada cara untuk membuat penerusan X11 bekerja dengan tmuxsesi lokal / remote campuran ?

Jawaban:


12

Tidak 100% yakin itu akan bekerja untuk Anda, tetapi tautan itu tidak bekerja untuk saya juga dan saya hanya menyalin variabel DISPLAY dari terminal awal dan menulis export DISPLAY=${copied from outside tmux}yang berfungsi dengan baik - yaitu

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

fungsi dari tautan itu memberi saya DISPLAY yang sama sekali berbeda yang tidak berfungsi


Masih gagal karena "Otentikasi Salah"
mgalgs

terima kasih, ini memungkinkan saya untuk membuka pdf dari tmux dengan xdg-open file.pdf
pascalwhoop

Apakah Anda mencoba ssh -Ybukan ssh -X?
feedMe

3

Saya punya masalah serupa. Dalam situasi saya, pengaturan DISPLAYtidak 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 -gbendera 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 -smungkin akan lebih baik. Tetapi saya tidak tahu tentang itu sampai saya membaca kembali bagian dari man tmuxuntuk 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-environmentdi precmddan preexeckait bukan milik saya, tapi saya lupa di mana saya melihatnya. Terima kasih, kepada siapa pun yang menulis itu, di mana pun Anda menulisnya.


Bekerja untuk saya tanpa skrip shell. Sangat senang, terima kasih.
wbg
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.