WSL 2 で X に接続する際に環境変数 DISPLAY に指定すべきアドレス (2020/06 時点)
WSL 1 では問題なく X の GUI に繋がっていたが、WSL 2 にしてから繋がらなくなってしまった。Windows 10 May 2020 Update の一般リリース後に仕様が変わってしまったのか、各所で紹介されている方法や こちら や こちら の記事の方法を試してもダメだったが、別の IP を試したら解決したので一例として書き残しておく。ただし今後の WSL 2 の仕様変更によっては勝手に直ったりするかもしれない。
結論: ホスト側 IP を指定する
localhost
や /etc/resolv.conf
の nameserver
の IP ではダメなことがあり、その場合、WSL 側ではなく Windows 側のネットワークアダプターの IPv4 を指定すると繋がることがある。 ※ May 2020 Update 一般リリース後に /etc/resolv.conf
の仕様が変わってしまったものと思われる。なお WSL 1 ではホストと IP が共有されていたようだ。
具体的には、DISPLAY
環境変数を次のように export
すればよい(コピペで OK)。
export DISPLAY=$(ipconfig.exe | grep "IPv4" | head -1 | awk '{print $NF}' | awk 'sub(/\r$/,"")'):0
どの環境でも上手くいくかどうかは分からないが、手元の環境ではこれで X に繋がるようになったので一度試してみて頂いてもよいだろう。
※ 各自の環境での ipconfig.exe
の出力内容に合わせて適宜スクリプトは修正すること
どの IP にすればよいのか?
これらの記事: WSL2のGUI設定でつまずいたところ、WSL2のX-ServerでGUI表示する際に「export DISPLAY=:0.0」が効かない では /etc/resolv.conf
の nameserver
の IP で直っていたようだが、現時点 (2020/06) の私の手元の環境ではダメだった。現在の /etc/resolv.conf
の nameserver
は WSL 側の vEthernet アダプターを指しており、そちらではなくホスト側 Windows のネットワークアダプターの IP にしたところ、手元の環境ではそれで直った。
WSL 上で Windows 側の実行形式はそのまま動くので、ipconfig.exe
で IP を取得しそれを DISPLAY
環境変数に export
する。Windows の改行コードが悪さをするので削ってから渡している。環境によって ipconfig.exe
が表示するアダプターの順番などは異なる可能性があるので、冒頭に示したスクリプトでダメだった場合は各自の環境での出力内容に合わせて適宜修正すること。
ちなみに Pengwin では元々ホスト側アダプターの IP が参照されており何もしなくても X に繋がっている。他の Microsoft ストアアプリ (Ubuntu 20.04 LTS など) でインストールすると現状ダメなのだが、そのうち対応して勝手に直ってくれるのかもしれない。
Author And Source
この問題について(WSL 2 で X に接続する際に環境変数 DISPLAY に指定すべきアドレス (2020/06 時点)), 我々は、より多くの情報をここで見つけました https://qiita.com/souyakuchan/items/a484e1dd23639eb63bdb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .