2台のLinuxシステムが稼働しています。他人でつながると
ssh -X 192.168.1.6
xterm
orを実行できfirefox
、作業中のコンピュータでウィンドウが期待どおりに表示されます。
gnome-terminal
ただし、またはを実行すると、meld
これらのプログラムのウィンドウがリモートコンピュータに表示されます。
エラーメッセージが表示されないため、一般的な認証の問題はないようです。私はそのスレッドを見つけました:ヘッドレスサーバーでリモートでgnome-terminalを起動するには? (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
でご奉仕くださいgnome-terminal
。しかし、それにはmeld
選択の余地はありません--app-id
。
正しいコンピュータにウィンドウが表示されるようにする方法はありますか?
しかし、両方のシステムのLinuxバージョンは5.15.12-200.fc35.x86_64 fedoraです。
追加のスクリプトや環境ハックなしで動作させるには:
どこでもWaylandを無効にしてください! Fedora GDM ログイン画面では、ログイン画面でほとんど非表示のメニューを使用できます。後ろにログインするユーザーを選択しました。小さなギアがありますが、現在のGNOMEバージョンでは右側にあります。 「X11の下のGNOME」を選択すると、Waylandの問題を解決できます。タッチスクリーンが機能すると、フォントのレンダリングがはるかに向上し、マウスポインタ補正が完全に機能します。それらのどれもWaylandと協力しません...参考に!注:ホスト側とリモート側の両方で常にWaylandを無効にする必要があります!
ベストアンサー1
私が理解したのは、X11転送を使用するブートストラップの重要な部分は変数ですGDK_BACKEND=x11
。これがないと、GNOMEアプリケーションはデフォルトでWaylandウィンドウシステムを使用します。これによりウィンドウがリモートシステムに表示されます。
これは、リモートホストの同じユーザーアカウント(そのホストのローカルセッションに関連付けられている)で実行されているか、オンデマンドD-Busセッションによって開始される可能性がある他の既存のインスタンスに接続しようとしないように--app-id
するためです。 X11 転送要求の使用を認識しません。代わりに、X11転送と環境変数を使用するように特定のインスタンスにのみ通信します。gnome-terminal
gnome-terminal-server
gnome-terminal
gnome-terminal-server
GDK_BACKEND=x11
gnome-terminal
これは実際には端末アプリケーションではない--app-id
ため、必要なものです。これは、D-Busを呼び出して実際の端末ウィンドウを生成する小さなクライアントアプリケーションです。区別できない回避策は次のとおりです。 「この新しい端末ウィンドウを作成するときに既に持っているデフォルトのディスプレイアレイの代わりにX11バックエンドを使用してください。」gnome-terminal
gnome-terminal-server
gnome-terminal
gnome-terminal-server
$DISPLAY
$XAUTHORITY
私の理論が正しい場合は、次のようなmeld
簡単なものから始めることができます。
GDK_BACKEND=x11 meld
これがうまくいけば、次の簡単なラッパースクリプトを作成できます。
#!/bin/sh
if [ "$SSH_CONNECTION" != "" ] && [ "$DISPLAY" != "" ]; then
GDK_BACKEND=x11 /usr/bin/meld "$@"
else
exec /usr/bin/meld "$@"
fi
実際のmeld
場所があると仮定すると、/usr/bin/meld
このスクリプトに名前を付けて/ usr / binの前のディレクトリにmeld
配置すると、ローカルで実行するかSSH X11転送を介して実行するかは常に正しい操作を実行します。$PATH
meld
~/.bash_profile
あるいは、セッションがX11転送を介したSSH接続に関連付けられている場合は、すべてのプログラムに対して設定するために~/.profile
リモートシステムに簡単なテストを追加することもできます。GDK_BACKEND=x11
if [ "$SSH_CONNECTION" != "" ] && [ "$DISPLAY" != "" ]; then
export GDK_BACKEND=x11
fi