WSLではGUIアプリが使えないと解説している記事もありますが、それは単にXサーバ(X Windowサーバ)が用意されていないというだけです。
なので、Windows用Xサーバを用意してあげればGUIアプリ(X Windowアプリケーション)を使うことができます。
Windows用のXサーバといえば「Xming」が有名ですが、今回はXサーバとターミナルが合体した便利ソフト「MobaXterm」を使用します。
MobaXtermのインストール
MobaXtermをインストールします。
インストール不用のポータブルエディションでもOKです。
MobaXtermの起動
インストールが終わったらMobaXtermを起動します。 これだけでXサーバが立ち上がります。簡単ですね!
Bash on Ubuntu on WindowsのUbuntuに接続
次にMobaXtermのターミナルをBash on Ubuntu on WindowsのUbuntuに接続します。
[Session] - [Shell]の順にクリックし、Terminal shellで[Ubuntu Bash (WSL)]を選択します。
[OK]を押すとターミナルが起動します。
GUIアプリの起動
MobaXtermのターミナルからGUIアプリを起動します。
まだGUIアプリが入ってない場合は、定番のx11-appsを入れてみましょう。
sudo apt-get install x11-apps
インストールが完了したら
xeyes &
で目玉が表示されればOKです。
標準のターミナルからもGUIアプリが起動できるようにする
先ほどはMobaXtermのターミナルからGUIアプリを起動しました。同じことをBash on Ubuntu on Windowsの標準ターミナルでできるようにします。
まず、MobaXtermを起動します。MobaXterm自体がXサーバなので、GUIアプリ使用時にはMobaXtermを立ち上げておく必要があります。
次にBash on Ubuntu on Windowsの標準ターミナルで
xeyes &
を実行してみると、
Error: Can't open display:
というエラーが表示されると思います。
X Window Systemを使用する際にはディスプレイ番号を指定する必要があり、この設定がされていないためにこんなエラーが出てしまいます。MobaXtermのターミナルの場合は、この設定が自動的に行われているからエラーが出ることなくGUIアプリが実行できてたというわけなんです。
標準ターミナルにもディスプレイ番号を指定してやればMobaXtermのターミナルと同様にGUIアプリを起動することができます。ディスプレイ番号の指定は以下のように環境変数を設定すればOKです。
$ export DISPLAY=localhost:0.0
これでGUIアプリが起動できるようになりました。
毎回この設定をするのが面倒なら、~/.bashrcにこの設定を追加してください。