べれすく!

素人プログラマによるモノづくりやブログ生活を話すブログ

【スポンサーリンク】

【LinuxアプリをWindowsで動かそう】WSLでLinuxのGUIアプリを起動する話

こんにちは!べれすくです。
 
前回はWSL(Windows Subsystem for Linux)の導入方法についてのお話をしました。
 
まだWSLが導入できていない方はこちらにどうぞ
↓前回

veresk.hatenablog.com

 
しかし、前回も言った通りWSLはそのままではCLIにしか対応していません。WSLはあくまで基礎的なところだけで、グラフィック関係は実装されてないようです。
そこで、Windows上でソフトによる補完をしてあげましょう!

もくじ

必要なソフトをインストールしよう

必要なのはX Window Systemと呼ばれる種類のソフトです。
いろんな種類があるのですが、今回はVcXsrvを使います。 WSLを使用している方の多くはこれを使っているみたいですね。
 
こちらのサイトからVcXsrvをダウンロードします。

sourceforge.net

ダウンロードできたら、適当にインストールしちゃってください
Nextを押しまくればインストールが完了します。
f:id:Veresk:20200225000742p:plain
 

VcXsrvの設定しよう

早速、インストールしたVcXsrvを起動します。
VcXsrvを起動すると設定画面が出ます。
multiple windowを選ん「次へ」を押します。

f:id:Veresk:20200225001839p:plain

Start on clientを選択して「次へ」

f:id:Veresk:20200225002305p:plain

ここが重要!!
ここで何も考えず「次へ」を押すと起動しないソフトが出てきます。
ROS関連でいうとRvizやgazeboなどが起動しないようです。
   
一番下のAdditional parameter for VcXsrvに以下の一文を追加します。

-nowgl

 
追加できたら「次へ」 f:id:Veresk:20200225003319p:plain

ここはどちらでもいいですが、しておくと便利です。
save configurationをクリックすると設定を保存することができます。
その保存したファイルをダブルクリックすると次から今回の設定で、瞬時にVcXsrvが起動します。
f:id:Veresk:20200225004318p:plain  
完了を押すとVcXsrvがバックグラウンドで起動します。
右下のインジゲータを展開すると起動しているのがわかります。(Xのアイコンがそうです)
f:id:Veresk:20200225004556p:plain
 

Linux側の設定しよう

次にLinuxとVcXsrvを繋げましょう。
WSLのLinuxを起動してください。
f:id:Veresk:20200225005354p:plain
 
起動したら以下のコマンドを実行します。

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 &

マウスカーソルを見つめるかわいいお目目が出てくれば成功です。
f:id:Veresk:20200225012107p:plain  
次回はいよいよROSを導入します!
 
↓つぎ

veresk.hatenablog.com

 
今回はこのくらいにしましょう。それでは!