C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

WSL2 から X410 ( または vcxsrv など ) へ画面を投げる方法のメモ

WSL1 だと 127.0.0.1:0 で Windows ホスト側の X Server へ画面ぽーんできて楽でした。WSL2ではすこし手間がかかるようになりました。

X Client ( on WSL2 ) -> X Server ( X410 )

  1. cat /etc/resolv.conf で WSL2 (内側)から Windows ホスト(外側) へつながる IP を確認
  2. export DISPLAY=172.21.128.1:0 などして DISPLAY 環境変数を設定
  3. X410 の Allow Public Access を有効にする ( vcxsrv なら -ac 引数を有効にする )
  4. konsole など起動して動作を確認する

f:id:USAGI-WRP:20200311115335p:plain

f:id:USAGI-WRP:20200311115502p:plain

自動設定されるように工夫

シェル起動時に実行される適当なところ ( ~/.zshrc とか) に以下を仕込む:

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

ちなみに WSL 以外の環境と ~/.zshrc 的なそれを共有したい場合は:

if [[ $(grep -i Microsoft /proc/version) ]]; then
  export DISPLAY="$(awk '/nameserver/ { print $2 }' < /etc/resolv.conf)":0
else
  export DISPLAY=127.0.0.1:0
fi

とかしておけば便利です。

参考