G11 स्क्रीन पर X11 अग्रेषित करना संभव है?


32

मैं जीएनयू स्क्रीन का लगातार उपयोग करता हूं। लेकिन, मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या स्क्रीन पर आगे बढ़ने के लिए X11 ऐप प्राप्त करने के लिए कोई व्यक्ति है जब मैं ssh-ing (क्या यह एक शब्द है?)। वर्तमान में अगर मैं स्क्रीन के माध्यम से 'gedit' चलाने की कोशिश करता हूं, तो यह मेरे 'सर्वर' कंप्यूटर पर खुलता है, न कि मेरे क्लाइंट पर। अगर मैं स्क्रीन के बाहर भी ऐसा करता हूं, तो सब ठीक है। लेकिन मैं चाहता हूं कि जब मैं स्क्रीन का उपयोग करूं तो सब कुछ ठीक हो जाए!

धन्यवाद!

पुनश्च: मैं समस्या का सामना कर चुका हूँ और मुझे xmove का उल्लेख दिखाई देता है, लेकिन मुझे ऐसा पैकेज नहीं मिल रहा है जिसमें मेरे ubuntu पर xmove हो। (शुभं 10.10)


मेरे पास अब पूर्ण उत्तर खोजने के लिए कोई समय नहीं है, लेकिन आपको कुछ पर्यावरण चर को सही ढंग से सेट करने की आवश्यकता है। आप शायद यह पता लगा सकते हैं कि स्क्रीन के बाहर के वातावरण को देखने से आप कौन से हैं।
JanC

जवाबों:


32

मैन्युअल रूप से ऐसा करने के लिए, जब आप SSHed कर लेते हैं, लेकिन स्क्रीन पर रीटच करने से पहले, अपने DISPLAY वातावरण चर की जाँच करें:

echo $DISPLAY

एक बार जब आप स्क्रीन पर फिर से संलग्न हो जाते हैं, तो स्पष्ट रूप से पर्यावरण चर सेट करें:

export DISPLAY=:N.0

जहां : N.0 वह है जो echoअटैच से पहले दिखाया गया है। यह सही नहीं होगा, क्योंकि कुछ एप्लिकेशन सत्र डी-बस से बात करने की उम्मीद कर सकते हैं, जो एसएसएच कनेक्शन पर भेजने के लिए थोड़ा अधिक जटिल है।


1
बहुत बढ़िया! यह अधिकांश ऐप्स के लिए काम करने लगता है। मैं अपनी स्क्रीन 'फू' बनाने की कोशिश कर रहा हूं। क्या आपके पास कोई विचार है या क्या आप मुझे सामान्य दिशा में बता सकते हैं कि मैं इसे कैसे स्वचालित कर सकता हूं? धन्यवाद!
सैंड्रो

मैंने अजीब चीजें की हैं जैसे कुछ स्क्रिप्टिंग: echo $DISPLAY > $HOME/.display.txt; screen -x -dऔर फिर स्क्रीन में एक और चलाने के लिए जो करता हैexport DISPLAY=$(cat $HOME/.display.txt)
Kees Cook

ठीक यही मैं पूरा करने की कोशिश कर रहा हूं। लेकिन अभी तक कोई किस्मत नहीं। उस निर्यात को प्राप्त करने की कोशिश करना काफी अड़चन है क्योंकि इसे स्क्रिप्ट में चलाने से कोई फायदा नहीं है, मुझे किसी भी तरह से इसे स्रोत बनाने की आवश्यकता है ... और सेटेनव को भी जादुई स्पर्श नहीं लगता है।
सैंड्रो

स्क्रिप्ट प्रकार को रखने के लिए . /path/to/scriptकहाँ scriptहैexport DISPLAY=$(cat $HOME/.display.txt)
Kees Cook

यह मानता है कि आपके पास लॉगिन पर स्क्रीन ऑटो-स्टार्ट नहीं है (एक ला बायोबू)
विश्वविद्यालय में एक छात्र

11

रिपॉजिटरी में xpra नामक एक प्रोग्राम है, यह x11 के लिए ग्नू स्क्रीन की तरह है। इसके साथ काम करना बहुत मुश्किल नहीं है:

एक्स लगातार रिमोट अनुप्रयोग

Xpra आपको X अनुप्रयोगों के लिए GNU स्क्रीन की कार्यक्षमता प्रदान करता है।

यह उपयोगकर्ता को अपने स्थानीय मशीन पर रिमोट एक्स अनुप्रयोगों को देखने की अनुमति देता है, और चल रहे अनुप्रयोगों की स्थिति को खोए बिना रिमोट मशीन से डिस्कनेक्ट और फिर से कनेक्ट करता है।


2
मैंने लिखा है कि वास्तव में कंसोल और X11 एप्लिकेशन दृढ़ता दोनों को प्राप्त करने के लिए स्क्रीन के साथ xpra को कैसे एकीकृत किया जाए: krlmlr.github.io/integrating-xpra-with-screen । मेरे लिये कार्य करता है।
krlmlr

7

Byobu स्वचालित रूप से ssh और gpg एजेंटों को फिर से लिखता है। अगर यह आपके लिए मददगार हो, तो मैं इसे डिस्प्ले वेरिएबल को रीटचैट कर सकता हूं ...


यह X11 अग्रेषण के साथ ssh सत्र में बनाए गए नए सत्रों में डिस्प्ले चर के साथ भी पास नहीं होता है। यह अद्भुत होगा यदि यह किया ... मैंने ऑटो-स्टार्टिंग बायोबू को अक्षम करने के सिरदर्द के कारण इसका उपयोग करना बंद कर दिया है ताकि एक्स 11 अग्रेषण का उपयोग कर सके।
एक छात्र

2

इस तरह से मुझे यह काम मिला जब यह बाईबू चला रहा था

इस लाइन को "_byobu_source .." लाइन से पहले .bash_login में जोड़ें :

echo $DISPLAY > $HOME/.display.env

और फिर इस लाइन को .bashrc में जोड़ें :

if [ ! -z ${SSH_CONNECTION+x} ]; then
  export DISPLAY=$(cat $HOME/.display.env) 
fi

1

ऐसा लगता है कि समस्या यह है कि पर्यावरण चर XAUTHORITY स्क्रीन सत्र में संरक्षित नहीं है। मैंने इसे अपने .bashrc में निम्नलिखित जोड़कर हल किया। मुझे नहीं लगा कि यह आवश्यक होना चाहिए लेकिन मुझे लगता है कि आपको वह करना चाहिए जो आपको करना चाहिए:

# ensure X forwarding is setup correctly, even for screen
XAUTH=~/.Xauthority
if [[ ! -e "${XAUTH}" ]]; then
 # create new ~/.Xauthority file
 xauth
fi
if [[ -z "${XAUTHORITY}" ]]; then
 # export env var if not already available.
 export XAUTHORITY="${XAUTH}" 
fi

मैं यह सबसे अच्छा समाधान, या सबसे संक्षिप्त होने की उम्मीद नहीं करता, लेकिन यह काम करता है।



0

@ घर के सुझाव के आधार पर, मुझे यह सबसे अच्छा काम करने वाला समाधान मिला, कम से कम पोटीनी के माध्यम से आरएचईएल के लिए। मुझे पता है कि एक फ़ाइल बनाने का एक बेहतर तरीका है जो var रखती है, लेकिन यह गेट के बाहर काम X11करने के लिए DISPLAYजब लोड के माध्यम से एक्सेस करने के लिए होता है gnu screen

स्वचालित समाधान

जोड़ें .bashrc(या .bash_profile, आपके उपयोग के मामले पर निर्भर करता है)

#.bashrc
if [ -f ~/etc/.bash-screen-x11 ]; then
   echo $DISPLAY > $HOME/.display.env
   source ~/etc/.bash-screen-x11
fi

फिर निम्न फ़ाइल (या अपना पथ विकल्प) जोड़ें

#~/etc/.bash-screen-x11
# sets back display var.
if [ -z $STY ]; then
  export DISPLAY=$(cat $HOME/.display.env)
fi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.