そもそも macOS Catalina では XQuartz を起動して ターミナルから ssh -YC server-ip-address するだけでOKだったような...
開発環境が android studio と gradle に移行したのはいいけど、コンパイルの待ち時間が以前にくらべて増えてしまった。それなら高速なサーバ(Ubuntu)上で開発して表示だけ Mac に持ってこればいい。と思ったけど予想外に大変だったので顛末をメモ。
まず大前提として Mac側(X11の動いているクライアント)で ポート6000をLISTENする状態にしなければならない。
$ netstat -an | grep 6000
tcp4 0 0 *.6000 *.* LISTEN
tcp6 0 0 *.6000 *.* LISTEN
このように表示されればOK.
6000 ポートをLISTENしていない場合は、defaults コマンドを使って LISTENするように設定する。 設定するまえに確認。Mac側のTermianl でdefaults read を使って設定状況を見る
$ defaults read org.macosforge.xquartz.X11
{
SULastCheckTime = "2015-07-17 10:08:30 +0000";
"app_to_run" = "/opt/X11/bin/xterm";
"cache_fonts" = 1;
"done_xinit_check" = 1;
"login_shell" = "/bin/sh";
"no_auth" = 0;
"nolisten_tcp" = 0;
"startx_script" = "/opt/X11/bin/startx -- /opt/X11/bin/Xquartz";
}
"nolisten_tcp" = 0; のように nolisten_tcp が 0 になっていればOK.
1 になっていれば 6000 ポートはLISTENしない設定なので、 defaults write を使って 0 に書きかえる必要がある。 詳しくは こちら を。
結論としては以下のようにすれば、nolisten_tcp を 0 に設定できる.
$ defaults write org.macosforge.xquartz.X11 nolisten_tcp 0
Mac(Yosemite)側
Ubuntu(14.04)側
この方法以外に UbuntuのGUI描写をMac側に持ってくるには、VNC を使うか、SSH X11 Forwarding というのがある。 両方試したのだが、作動が遅いとか一部描写に問題が出るなどあったので、古い方式で実現することにした。 今どき X11 などを使っている人は少ないのか、情報があまりないようです。