1. ryoi084

    No comment

    ryoi084
Changes in body
Source | HTML | Preview
@@ -1,55 +1,55 @@
# WSL2でmatplotlibをプロットしようと思ったら...
なぜか出力するディスプレイが見つからないということを言われてしまったので, いろいろと調べてみました.
# 参考としたサイト
[Can't use X-Server in WSL 2 #4106](https://github.com/microsoft/WSL/issues/4106)
こちらのサイトにほとんど解決策が載っておりますので, こちらの記事から抽出してまとめました.
# VcXsrvの自動起動設定
1. **xlaunch.exe**という実行ファイルがあると思いますので, 起動します.
2. multiple window を選んで, 次へを選択します.
3. start to dient を選んで, 次へを選択します.
4. clipboard を使用したければ, clipboardにチェックを入れます.
5. **Additional parameters for VcXsrv** という入力フォームに **-ac** と入力して, 次へを選択します.
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269455/22041d37-0ab3-5c18-46e8-94aea8a1b0d0.png)
6. Save configuration を押して, どこかアクセスしやすい場所(デスクトップとか)に保存してください.
7. 完了を押してxlaunchを終了します.
8. 続いて, `Windowsキー + r`を押して, *shell:startup*と入力して検索します.
9. **スタートアップ**というフォルダが開きますので, ここに先ほどxlaunchを用いて作成したファイルを移動してしまってください.
これで, 自動的にVcXsrvがパソコンの起動時に立ち上がるようになりました.
# WSL上のディスプレイの設定
最後にVcXsrvの存在をWSLに教えてあげましょう.
1. Windows PowerShell を開きます.
2. ```ipconfig```と入力します.
3. *イーサネット アダプター vEthernet (WSL)*という項がありますので, その部分の***IPv4 アドレス*** をメモしておきます. 仮にここでは ```aaa.bbb.ccc.ddd``` としておきます.
4. WSLを開きます.
5. vim や nano などで`~/.bashrc`を開きます.
6. 開いた.bashrcの最後の行に, 以下のコマンドを追記して保存してください.
```shell:.bashrc
export DISPLAY=aaa.bbb.ccc.ddd:0
```
最後にWSLを再起動すると, 先ほど編集した.bashrcが読み込まれて, 設定が反映されます.
# まだ改善できていない点
WSLに割り当てられるIPアドレスは再起動を行うたびに変更してしまうそうです。今の所IPアドレスを固定する術が見当たらないため、なにか情報がありますとありがたいです。
-2019年9月現在はps1ファイルを作成してIPアドレスの割当を行っております。
+~~2019年9月現在はps1ファイルを作成してIPアドレスの割当を行っております。~~
# 追記
[Microsoftのissue](https://github.com/microsoft/WSL/issues/4106#issuecomment-501885675)にIPアドレスの割当方法が解決されていましたのでご紹介します。
```shell:~/.bashrc
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
```
上の項で説明したexportの指示をこちらに変えていただけたらと思います。
# 最後に
VcXsrv側に```-ac``` というオプションを加えましたが, 参考サイトによりますとパブリックアクセスを許可するコマンドであるそうです. WSL2が新たなコンテナシステムを形成したことによるのかと思われます。
## 以前の記事
[WSLでmatplotlibやgnuplotでプロットができない](https://qiita.com/ryoi084/items/c4339996c50c0cf39df4)