web-dev-qa-db-ja.com

Gnu Screenを介したX11転送、それは可能ですか?

GNU Screenを常に使用しています。しかし、私はsshしているときにX11アプリを画面上で転送する方法があるかどうかを把握しようとしていました(それは言葉ですか?)。現在、画面から「gedit」を実行しようとすると、クライアントではなく「サーバー」コンピューターで開きます。画面の外で同じことをすれば、すべてがうまくいきます。しかし、私もスクリーンを使用するときはすべてうまくいきたいです!

ありがとう!

PS:私はこの問題をグーグルで調べましたが、xmoveについて言及していますが、ubuntuでxmoveを含むパッケージを見つけることができません。 (ubuntu 10.10)

32
Sandro

これを手動で行うには、SSHでログインした後、画面に再接続する前に、DISPLAY環境変数を確認します。

echo $DISPLAY

画面に再接続したら、環境変数を明示的に設定します。

export DISPLAY=:N.0

ここで:N.は、アタッチ前にechoが示したものです。一部のアプリケーションは、SSH接続を介して送信するのが少し複雑なSession D-Busと通信することを期待している可能性があるため、これは完全ではありません。

32
Kees Cook

リポジトリにはxpraというプログラムがあり、x11のgnu画面のようなものです。作業するのはそれほど難しくありません:

X永続的リモートアプリケーション

Xpraは、Xアプリケーション用のGNU Screenの機能を提供します。

ユーザーは、ローカルマシンでリモートXアプリケーションを表示し、実行中のアプリケーションの状態を失うことなく、リモートマシンから切断および再接続できます。

11
Avihay

Byobuは、sshおよびgpgエージェントを自動的に再接続します。それがあなたに役立つなら、ディスプレイ変数を再アタッチすることができます...

7
Dustin Kirkland

これは、by延を実行しているときに動作する方法です

この行を。bash_loginbeforeの「_byobu_source ..」行に追加します。

echo $DISPLAY > $HOME/.display.env

そして、この行を。bashrcに追加します:

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

問題は、画面セッションで環境変数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

これが最良の解決策、または最も簡潔なものになるとは思わないが、うまくいく。

1
Mark

@harreの提案に基づいて、私はこれが少なくともPuTTY経由のRHELにとって最も有効なソリューションであることがわかりました。 varを保持するファイルを作成するよりも良い方法があることは知っていますが、これはゲートから機能してX11gnu screen経由でロードしたときにDISPLAYにアクセスできるようにします。

自動化ソリューション

.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
0
Brian Thomas

FreeNXは、リモートディスプレイを操作するための素晴らしいアプリです。

0
Habitual