X11 Gnu 화면을 통한 전달이 가능합니까?


32

나는 GNU Screen을 끊임없이 사용합니다. 그러나, 나는 ssh-ing 할 때 X11 앱이 화면을 통해 앞으로 나아갈 수 있는지 알아 내려고 노력했습니다 (단어입니까?). 현재 화면을 통해 'gedit'을 실행하려고하면 클라이언트가 아닌 '서버'컴퓨터에서 열립니다. 화면 밖에서 똑같이하면 모든 것이 정상입니다. 그러나 화면을 사용할 때 모든 것이 잘되기를 바랍니다!

감사!

추신 : 문제를 봤는데 xmove에 대한 언급이 있지만 우분투에서 xmove가 포함 된 패키지를 찾을 수없는 것 같습니다. (우분투 10.10)


지금 완전한 답을 찾을 시간이 없지만 올바르게 설정하려면 환경 변수가 필요합니다. 화면 밖에서 어떤 환경을 보았는지 알 수 있습니다.
JanC

답변:


32

SSH로 로그인 한 후 화면에 다시 연결하기 전에 수동으로이를 수행하려면 DISPLAY 환경 변수를 확인하십시오.

echo $DISPLAY

화면에 다시 연결 한 후 환경 변수를 명시 적으로 설정하십시오.

export DISPLAY=:N.0

여기서 : N.0echo첨부 전에 보여 지는 것 입니다. 일부 응용 프로그램은 세션 D- 버스와 통신 할 것으로 예상 할 수 있으므로 SSH 연결을 통해 전송하기가 좀 더 복잡하므로 완벽하지 않습니다.


1
대박! 이것은 대부분의 앱에서 작동하는 것 같습니다. 화면 'fu'를 올리려고합니다. 아이디어가 있습니까? 아니면 이것을 자동화하는 방법의 일반적인 방향을 알려 주실 수 있습니까? 고맙습니다!
Sandro

나는 스크립팅과 같은 이상한 일을 해왔다. echo $DISPLAY > $HOME/.display.txt; screen -x -d화면에서 또 다른 export DISPLAY=$(cat $HOME/.display.txt)
Kees Cook

바로 내가 달성하려고했던 것입니다. 그러나 지금까지는 운이 없다. 스크립트에서 실행하는 것이 좋지 않기 때문에 내보내기를 수행하는 것은 상당히 장애물입니다. 어떻게 든 소스를 지정해야합니다 .setenv도 마법의 손길이없는 것 같습니다.
Sandro

스크립트 유형 소스에 있다. /path/to/scriptscriptexport DISPLAY=$(cat $HOME/.display.txt)
키스 쿡

로그인시 화면 자동 시작 기능이 없다고 가정합니다 (일명 별표)
University of a University at

11

저장소에 xpra라는 프로그램이 있습니다 .x11의 gnu 화면과 같습니다. 작업하기가 너무 어렵지 않습니다.

X 영구 원격 애플리케이션

Xpra는 X 응용 프로그램 용 GNU Screen의 기능을 제공합니다.

사용자는 로컬 컴퓨터에서 원격 X 응용 프로그램을보고 실행중인 응용 프로그램의 상태를 잃지 않고 원격 컴퓨터에서 연결을 끊었다가 다시 연결할 수 있습니다.


2
krlmlr.github.io/integrating-xpra-with-screen 콘솔과 X11 응용 프로그램 지속성을 위해 xpra를 Screen과 실제로 통합하는 방법에 대해 작성 했습니다 . 나를 위해 작동합니다.
krlmlr

7

Byobu는 자동으로 ssh 및 gpg 에이전트를 다시 연결합니다. 도움이된다면 표시 변수를 다시 첨부 할 수 있습니다 ...


X11 전달을 사용하여 ssh 세션에서 생성 된 새 세션에서는 표시 변수를 전달하지 않는 것 같습니다. X11 포워딩을 사용할 수 있도록 byobu 자동 시작을 비활성화해야하는 두통 때문에 사용을 중단했습니다.
대학 학생

2

이것이 byobu를 실행할 때 작동시키는 방법입니다

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

FreeNX는 원격 디스플레이 작업을위한 훌륭한 앱입니다.


4
더 설명해 주시겠습니까?
대학 학생

0

@harre 제안을 바탕으로, 이것이 적어도 Putty를 통한 RHEL에 가장 적합한 솔루션이라는 것을 알았습니다. 나는 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.