WSL2+XmingでfoamMonitorを実行するときのやり方

どうもWSL2だと表題の組み合わせでXを飛ばすとエラーになるようなので調べてみました。拙著OpenFOAMの歩き方でも残差表示に使っていますが、今後、講習会関係でもひっかかる方がいるかもしれないのでメモを残します。

1.Xmingが立ち上がっていれば終了する。

すでにXmingが立ち上がっている場合はタスクバーから終了してください。

画像7

Xmingのアイコンを右クリックしてExitを選択すると確認のウインドウが表示されるので、Exitを押してください。

2.XLaunchを使って設定を変えたXmingを立ち上げる

XLaunchはスタートメニューのXmingフォルダの中にあります。

画像1

XLaunchを起動すると設定を変更したXmingを立ち上げられます。最初の「Select display settings」は特に触らずに次に行きます。

画像2

「Select how to start Xming」の画面は何もせずに次に行きます。

画像3

Specify parameter settingsの画面になるので、ここで「No Acsess Contorol」にチェックを入れておきます。これが重要です。これにチェックを入れないとWSL側でXを飛ばしても画面が表示できません。

画像4

最後に今回の設定を保存するか聞かれますので「Save configuration」をクリックしてデスクトップあたりにxlaunchファイルを保存します。

画像5

これでWindows側の準備はできました。

以降、Xmingの軌道は先ほど保存したxlaunchファイルをクリックします。

3.WSLを起動してDISPLAY変数を設定する

これまでWSL1だと

export DISPLAY=localhost:0.0

でDISPLAY変数を設定していましたが、こちらの記事を参考にさせていただくと、WSL2からはWSL側でIPアドレスを持つようなので、localhostが使えなくなっています。しかも毎回IPアドレスが異なるようなので、先ほどの参考記事の記述をもとに次のコマンドを代わりに実行します。

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

これで毎回異なるIPアドレスでもDISPLAY変数を設定できます。

4.foamMonitorを実行

これでfoamMonitorを実行すると、残差が表示されています。

foamMonitor -l postProcessing/solverInfo/0/solverInfo.dat

画像6

まとめ

WSLのバージョン違いで大きく仕様が変わっていたので、ここにはまる方も多いようです。ややこしいようなら、WSL1に戻すのもありかと思います。WSLgでこの辺り簡単になることを期待しています。

いいなと思ったら応援しよう!