はじめに
- サーバ側のコードをいじるのにVimを使わなくても良いようにしたかったのでVSCodeのRemoteSSHを使おうとした時の話です。
- Terminal等からSSHは正常に接続でき、X11転送も問題なくできている前提の話です。
- 力技で解決したので、知見やベストプラクティスがあればご教授いただきたいです!
- めんどくさいのでX11に関してはVSCodeを使わないことにしました。
追記2020/12/19
RemoteSSHのバージョンを0.49にダウングレードしたらX11転送してくれました!めでたしめでたし
困ったこと: リモート側のグラフをローカルに表示したいのにX11転送されない!
例えば、gnuplotを描画してみると...
Terminal type set to 'qt'
gnuplot> p sin(x)
QXcbConnection: Could not connect to display localhost:10.0
Could not connect to existing gnuplot_qt. Starting a new one.
QXcbConnection: Could not connect to display localhost:10.0
Warning: slow font initializationgnuplot>
となり、出力されません。これは困りました...
研究で使用しているので、グラフが見れないと全く使い物になりません。
結論: TerminalからもSSHし、VSCodeからのSSHでDISPLAY変数を合わせる
非常にめんどくさいですが、DISPLAY変数を通常のSSHに無理やり合わせましょう。
DISPLAY変数はSSHを繋いだ順に登録されるので、
- VSCode: localhost:10.0
- Terminal: localhost:11.0
のようになっているはずです。逆の順で繋げば逆になると思います。
なので、VSCodeTerminalで
export DISPLAY=localhost:11.0
とすると正しくX11転送されます。
.bashrcにexportを書いておき、毎回正しく繋げばexportする必要はないと思いますが、ズレるしそんなのに気を使うのはちょっとアホらしい...
おわりに
VSCodeからグラフの描画をするのはめんど〜くさいので、描画だけTerminal上でバックグラウンド立ち上げしておくのが良いと思いました。
こうすればできるよ!等ありましたら教えていただけると嬉しいです。。。