web-dev-qa-db-ja.com

X11アプリケーションをリモートで実行するにはどうすればよいですか?

次の目標を前提として、リモートサーバーでホストされているX11アプリケーションを実行するにはどうすればよいですか。

  • サーバー上でローカルに実行されるものanythingを実行します。これには、GLXを使用するOpenGLアプリが含まれます。
  • ローカルデスクトップとの統合のように見えません。つまり、アプリは、個別のデスクトップ領域がなくても、ローカルで実行されているように見えます。したがって、ラッパープロトコルではなく、X11ソリューションが必要です。
  • できれば、接続が切断された場合でもアプリケーションを実行し続けることができます。その後、再接続したときに、実行中のアプリを再度開くことができます。

ここでスーパーユーザーに多くのアドバイスが浮かんでいるのを見てきましたが、その多くは部分的な修正であるか、単に悪いものです。

  • プレーンsshX11-Forwardingが出ています:特定のアプリ、特にGLX拡張機能に依存しているアプリを実行できません。
  • 設定LIBGL_ALWAYS_INDIRECT=1私にはうまくいきません。
  • Xephyr も出ています。現在、GLXはサポートされていませんが、開発ツリーでいくつかのGLXが機能するのを見てきました。おそらく将来的には、それが最もクリーンな方法になるでしょう。
  • xmove も出ています。それ以上検討するには古すぎます。
  • VNCが出ています。デスクトップ全体を転送し、Xプロトコルを取得することはできません。

編集:私は週末にいくつかの提案を解決するために戦いました、そしてxpraが最もうまくいくものです。私は以下の答えで私のセットアップを説明しました、そしてそれが他の誰かに役立つことを願っています。

7
jpaugh

Xpra (前述のように ここ )は私が望むことをします。これにより、任意のXアプリケーションを実行できます。これらのアプリケーションは、同じコンピューター上または別のマシン上の複数のクライアントに転送できます。 OpenGLアプリの実行もサポートしており、最後のクライアントが切断された後もアプリの実行を継続できるため、後で再接続することができます。

xpraは、クライアントとサーバーの2つの部分に分かれています。サーバーを起動するには、リモートマシンで次を実行します。

$ xpra start :100

これにより、新しいXディスプレイでxpraが起動します。 (プロキシで使用する 回避策 があります。)

アプリケーションをxpraで制御するには、次のようにxpraサーバーと同じディスプレイで実行します。

$ export DISPLAY=:100
$ firefox&
$ blender&
...

これはすべて、ssh接続(X11-Forwardingの有無にかかわらず)を介して問題なく実行できます。

クライアントを起動するには、次のいずれかを実行します。

$ ssh -X user@remotehost
<gain remote connection>
$ xpra attach :100

または

$ xpra attach ssh:user@remotehost:100

後者では、xpraクライアントをローカルマシンにインストールする必要があることに注意してください。前者はそうではありません。

xpraクライアントは、ウィンドウマネージャーのタスクバー/パネルにアイコンを配置して、クライアントを切断できるようにします。 (または、サーバーを強制終了しないように注意している限り、強制終了することもできます。)xpraサーバーがまだ実行されている限り、後で再接続できます。ホスト上で単一のxpraサーバーを実行している場合は、表示番号を省略してもかまいません。xpra attachがそれを認識します。

xpraの非常に優れた機能の1つは、既存のディスプレイでサーバーを起動できることです。これにより、xpraサーバーがクラッシュした場合にセッションを回復できます(そのディスプレイ上のXサーバーがまだ実行されている限り)。これを行うには、

$ xpra start --use-display :100

警告:

  • xpraはウィンドウマネージャーとして実行されます。他のウィンドウマネージャーへの埋め込みではかなりうまく機能しますが、Xアプリ自体ではあまりうまく機能しません。たとえば、 rxvt-unicodeタイトルバーを削除します。また、ドロップダウンボックスやメニューが画面外に表示されるなど、画面上で操作する必要のあるスペースの量もウィンドウに通知されません。ただし、後者の問題は構成を修正することだと思います。

  • キーが繰り返されます。頻繁に。これはxpra attach --no-keyboard-syncを使用して解決できますが、manページでは、これが特定のゲームではうまく機能しないと警告しています。私は、これらのゲームの1つを使用したいと思っていないので、指を交差させ続けています。

これらの理由から、XephyrはウィンドウマネージャーではなくXサーバーとして実行されるため、(GLXをサポートすると)より良いソリューションになる可能性があります。ただし、以前に切断されたセッションの再開をサポートするかどうかは調査していません。

11
jpaugh