X11 अग्रेषण कई tmux सत्रों के साथ काम नहीं करता है


9

यदि मैं tmuxस्थानीय रूप से एक सत्र शुरू करता हूं और इसे खुला छोड़ देता हूं , तो दूरस्थ रूप से ssh करें और एक नया tmux सत्र शुरू करें (पुराने से संलग्न नहीं, एक नया सत्र स्पैंकिंग) X11 अग्रेषण टूटने लगता है। मैं इस समस्या के लिए एक समान मुद्दे के साथ की कोशिश की है, screenलेकिन कोई फायदा नहीं हुआ ...

जब मैं GUI ऐप लॉन्च करने का प्रयास करता हूं तो त्रुटि संदेश (जैसे xeyes) के प्रभाव के लिए कुछ है can't open display: wrong authentication। मैं वास्तव में नहीं जानता कि यह निश्चित रूप से क्या है क्योंकि ऐसा लगता है कि यह एक गाड़ी वापसी और नए संदेश के साथ त्रुटि संदेश के भाग को अधिलेखित कर रहा है ...

अभी के लिए मैं बस से गुजरता हूं और मैन्युअल रूप से उन सभी tmux सत्रों को बंद करता हूं जो मैंने अपना नया दूरस्थ सत्र शुरू करने से पहले स्थानीय रूप से शुरू किया था। क्या मिश्रित स्थानीय / दूरस्थ tmuxसत्रों के साथ X11 अग्रेषण प्राप्त करने का कोई तरीका है ?

जवाबों:


12

100% यह सुनिश्चित नहीं है कि यह आपके लिए काम करेगा, लेकिन यह लिंक मेरे लिए भी काम नहीं किया और मैंने अभी शुरुआती टर्मिनल से DISPLAY चर की प्रतिलिपि बनाई और लिखा, export DISPLAY=${copied from outside tmux}जो ठीक काम किया - यानी

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

उस लिंक से फ़ंक्शन ने मुझे पूरी तरह से अलग प्रदर्शन दिया, जो काम नहीं करता था


फिर भी "गलत प्रमाणीकरण" के कारण विफल रहा
मंगल

धन्यवाद, इसने मुझे tdux से xdg-open file.pdf के साथ pdfs खोलने की अनुमति दी
pascalwhoop

क्या आपने ssh -Yइसके बजाय कोशिश की ssh -X?
फीडमे सिप २ feed ’१18

3

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। मेरी स्थिति में, सेटिंग DISPLAYपर्याप्त नहीं थी। डिफ़ॉल्ट रूप से, कुछ वातावरण सेट किया जाता है जब tmux सर्वर शुरू होता है (जब पहला सत्र शुरू होता है), न कि केवल कोई नया सत्र। निम्नलिखित मेरे लिए काम करता है, लेकिन मुझे संदेह है कि यह इष्टतम है।

में .tmux.conf, tmux उन चरों को याद रखें जिन्हें आप बाहरी वातावरण से रखना चाहते हैं। मैंने उन लोगों का उपयोग किया, जो स्थानीय रूप से गनोम टर्मिनल का उपयोग कर रहे थे और दूर से टर्मिनल.एप्प का उपयोग कर रहे थे। उनमें से कुछ शायद आवश्यक नहीं हैं, लेकिन मुझे यकीन नहीं है जो। -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 \
  "

"अद्यतन-पर्यावरण" नाम के बावजूद, सेटिंग वास्तव में पर्यावरण को बदलने के लिए प्रतीत नहीं होती है। हालाँकि, आप इसका उपयोग करके पुनः प्राप्त कर सकते हैं 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हुक अपने ही नहीं था, लेकिन मैं भूल जाते हैं जहां मैं इसे देखा था। शुक्रिया, जिसने भी लिखा है, जहां भी लिखा है।


शेल स्क्रिप्ट के बिना मेरे लिए काम किया। बहुत-बहुत धन्यवाद।
wbg
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.