SSHを使用してアクセスするヘッドレス仮想マシン(Ubuntu Server 17.04を実行)があります。私はX11配信の基本をよく知っており、xtermと友達をうまく伝えることができます。 XFCE端末もOKを渡します。
Gnome Terminalを使いたいのですが起動しないようです。代わりにしばらく停止し、最終的にエラーが発生します。
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サービスを実行する必要があるようですが、それが何であるか、デスクトップセッション全体のコンテキストの外でサービスを開始する方法がわかりません。仮想マシンは基本的にヘッドレスなので、通常は起動しません。
私の仮想マシンでローカルでGUIデスクトップセッションを開始せずにGnome Terminalがリモートで動作するようにするにはどうすればよいか知っていますか?
答え1
これはうまくいきません。gnome-terminal
(他のようにgnome-thing
)はdbusに接続しようとしますが、応答を受け取らずに長い時間後に失敗します。
最も簡単な解決策は、セッションのdbusインスタンスを起動することです。
export $(dbus-launch)
gnome-terminal
始めるとウェイランド会議時間:離れて初めて実行したので、export $(dbus-launch)
もう一度実行する必要があります。それ以外の場合は、gnome-terminal
渡されたモニターのX11インスタンスの代わりにWaylandインスタンスがリモートモニターから起動されます。gnome-terminal
この場合の別の回避策は、X11を明示的に実行することです。 X11gnome-terminal-server
は、X11を使用する最後のウィンドウが閉じた後に終了します。例:
#! /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
これは、バニラのUbuntuまたはDebianで次のコマンドを使用して実行できます。
ssh -X user@host dbus-launch gnome-terminal
私のメモにはいくつかの共通記号がありますdbus-launch
。--exit-with-x11
--exit-with-session
残りの問題は、ロードに時間がかかることです。
gnome-terminal
私はビューにはローカル対リモート会話のようですgnome-terminal-server
。コードをインポートして修正する必要がありますが、かなり単純なソフトウェアであり、あまりにも単純です。
編集:また、x11-dbus
パッケージなしでこれを行うことができます(Ubuntuでは非常に小さいですが、デフォルトでは使用できません)。
これはすべてのバージョンでは機能しませんが、gnome-terminal
Ubuntu 22とDebian 11でテストした結果は機能します。
ssh -X user@host gnome-terminal --disable-factory
端末コマンドのスタイル/長さに加えて、これらの方法には違いがあります。
最初の方法は、リモートコンピュータと対話する方法でインスタンスを起動dbus-launch
します。gnome-terminal
gnome-terminal-server
ただし、この方法ではUbuntu 22ドックなどとシームレスに動作するインスタンスが--disable-factory
起動します。gnome-terminal
これら2つのオプションのうちの1つがあなたの要件を満たしていることを願っています。他の方法もありますが、私の考えでは、この方法が簡単すぎるので、これは最善です。
答え3
単一セッションでX11を渡す簡単な場合は、次を参照してください。 https://askubuntu.com/a/1279065/463121
ログイン後:
$ dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY
これにより、gnome-terminalが高速になり、X11を介して渡すことができます。
エラーが発生し始めると、プライベート dbus デーモンが中断された可能性があります。すべてのユーザープロセスを終了して再度ログインできる場合は問題ありません。
編集:またはさらに:
$ dbus-update-activation-environment --all
答え4
X経由でアプリケーションを起動するのは非常に遅いかもしれません。
私はSSHを介して世界中のクライアントシステムにVNCトンネルを確立することに多くの成功を収めました。
リモートコンピュータにVNCサーバー(TigerVNCなど)をインストールし、デーモンを起動します。 (yum install -y Tigervnc-server ; vncserver :3 - または使用するポート)。パスワードを設定するように求められます。
ローカルコンピュータにVNCクライアントをインストールします(yum install -y Tigervnc)。 ~/.vnc/xstartup ファイルに「exec /usr/bin/gnome-terminal」を追加できます。次に、次を実行します。ssh -L 5903:localhost:5903 -N -f -l user remote-server-IP-or-hostnameここで、ポート番号は59で、目的のポート番号になります。
他の端末で実行:vncviewer:3
サーバーに設定されたパスワードの入力を求められます。