【LinuxアプリをWindowsで動かそう】WSLでLinuxのGUIアプリを起動する話
こんにちは!べれすくです。
前回はWSL(Windows Subsystem for Linux)の導入方法についてのお話をしました。
まだWSLが導入できていない方はこちらにどうぞ
↓前回
しかし、前回も言った通りWSLはそのままではCLIにしか対応していません。WSLはあくまで基礎的なところだけで、グラフィック関係は実装されてないようです。
そこで、Windows上でソフトによる補完をしてあげましょう!
もくじ
必要なソフトをインストールしよう
必要なのはX Window Systemと呼ばれる種類のソフトです。
いろんな種類があるのですが、今回はVcXsrvを使います。
WSLを使用している方の多くはこれを使っているみたいですね。
こちらのサイトからVcXsrvをダウンロードします。
ダウンロードできたら、適当にインストールしちゃってください。
Nextを押しまくればインストールが完了します。
VcXsrvの設定しよう
早速、インストールしたVcXsrvを起動します。
VcXsrvを起動すると設定画面が出ます。
multiple windowを選ん「次へ」を押します。
Start on clientを選択して「次へ」
ここが重要!!
ここで何も考えず「次へ」を押すと起動しないソフトが出てきます。
ROS関連でいうとRvizやgazeboなどが起動しないようです。
一番下のAdditional parameter for VcXsrvに以下の一文を追加します。
-nowgl
追加できたら「次へ」
ここはどちらでもいいですが、しておくと便利です。
save configurationをクリックすると設定を保存することができます。
その保存したファイルをダブルクリックすると次から今回の設定で、瞬時にVcXsrvが起動します。
完了を押すとVcXsrvがバックグラウンドで起動します。
右下のインジゲータを展開すると起動しているのがわかります。(Xのアイコンがそうです)
Linux側の設定しよう
次にLinuxとVcXsrvを繋げましょう。
WSLのLinuxを起動してください。
起動したら以下のコマンドを実行します。
export DISPLAY=:0
これで完了!...といきたいところなんですが、このコマンドはLinuxを起動するたびに入力し直さないといけません。
面倒くさいので起動と同時に自動実行しちゃいましょう!
以下のコマンドを実行するだけで自動化ができます。
echo "export DISPLAY=:0" >> ~/.bashrc source ~/.bashrc
※2021/09/26追記
WSL2環境ではexport DISPLAY=:0が使えないようです。
直接アドレスを指定してやるか、上記のコマンドの代わりに以下のコマンドを使用してください。
echo "export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0" >> ~/.bashrc source ~/.bashrc
これで、先ほどのコマンドがLinuxの起動と同時に自動実行されます!
テストソフトを起動してみよう
それでは試しに起動していましょう。
テスト用のLinuxソフトウェアが用意されているのでそれを使います。
Linuxを起動してテストソフトをインストールします。
以下のコマンドを実行してください。
sudo apt-get install x11-apps
インストールしますか[Y/n]みたいな質問が出るのでyをおしてEnterキーをおします。
そしてインストールできたら起動!
起動もコマンドなので以下のコマンドを入力しましょう。
xeyes &
マウスカーソルを見つめるかわいいお目目が出てくれば成功です。
次回はいよいよROSを導入します!
↓つぎ
今回はこのくらいにしましょう。それでは!