web-dev-qa-db-ja.com

ヘッドレスサーバーでgnome-terminalをリモートで起動するにはどうすればよいですか? (X11転送を介した起動に失敗します)

SSHを使用してアクセスするヘッドレスVM(Ubuntuサーバー17.04を実行))があります。X11転送の基本に慣れており、xtermや友人を問題なく転送できます。XFCEターミナルまた、OKを転送します。

Gnomeターミナルを使用できるようにしたいのですが、起動しないようです。代わりに、しばらくハングし、最終的に次のエラーが発生します。

Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: Timeout was reached

興味深いことに、ローカルデスクトップセッションをVM(startx経由で起動)で実行している場合、gnome-terminalはX11を介してリモートで動作します。

実行する必要があるある種のGnomeサービスがあると思いますが、それが何であるか、または完全なデスクトップセッションのコンテキスト外でそれを開始する方法を理解できません。 VMはデフォルトでヘッドレスであるため、通常は起動しません。

VMでローカルにGUIデスクトップセッションを開始せずに、Gnomeターミナルをリモートで動作させるために何ができるかについて誰かが洞察を得ましたか?

2
Nicholas Clark

_gnome-terminal_(他の _gnome-thing_ と同様)はdbusに接続しようとし、長い間応答を受信しなかった後失敗するため、これは機能しません。

最も簡単な回避策は、セッションのdbusインスタンスを開始することです。

_export $(dbus-launch)
gnome-terminal
_

リモートマシンでWaylandセッションを開始した場合export $(dbus-launch)を実行すると、再度実行する必要があります。そうでない場合は、_gnome-terminal_は、転送されたX11インスタンスではなく、リモートディスプレイで_gnome-terminal_のWaylandインスタンスを開始します。表示。

この場合の別の回避策は、X11 _gnome-terminal-server_を明示的に実行することです。これは、それを使用する最後のウィンドウが閉じた後に終了します。例:

_#! /bin/bash
ID=foo.bar$RANDOM
GDK_BACKEND=x11 /usr/libexec/gnome-terminal-server --app-id "$ID" &
sleep .4        # yuck
gnome-terminal --app-id "$ID"
wait
_
2
mosvy