WSL2の新機能WSLgを使ってX Window SystemのGUIアプリを動作させてみる

以前、‘‘‘WSL‘‘‘環境化でXのアプリケーションを実行してみました。

uepon.hatenadiary.com

当時はデフォルトではXアプリケーションの実行は‘‘‘WSL‘‘‘単体で対応していなかったため、 ‘‘‘X Window System‘‘‘のサーバになるアプリである‘‘‘VcXsrv Windows X Server‘‘‘をインストールしてGUI対応のアプリを実行していました。その時から状況も変わり ‘‘‘X Window System‘‘‘のサーバを別途インストールすることなく、‘‘‘WSL2‘‘‘のデフォルトで対応することができるようになったようです。 ‘‘‘WSL‘‘‘で‘‘‘Linux‘‘‘のGUIアプリを動かす仕組みは、‘‘‘「WSLg(Windows Subsystem for Linux GUI)」‘‘‘と呼ばれています。 WSL2を最新版にすれば、WSLgを使用することができます。※WSLgはWSL2でのみサポートされます。

今回はその‘‘‘WSLg‘‘‘を使用してGUIアプリを起動するかを確認してみようと思います。

今回使用する環境は以下のようになっています。‘‘‘Insider Preview Dev‘‘‘チャンネルを有効にしていることもあり、‘‘‘Windows11‘‘‘になっていました。

f:id:ueponx:20210916012721p:plain

‘‘‘WSLg‘‘‘の設定を行ってみる

以下のサイトを参考にしながら設定を行うことにしました。

【参考】 astherier.com

まずは‘‘‘WSL2‘‘‘のバージョンを最新版にするところからはじめます。まずは‘‘‘PowerShell‘‘‘を管理者モードで実行します。(田+xなどでメニューを開いて)Windowsターミナル(管理者)を選択すれば、実行できます。

f:id:ueponx:20210916013022p:plain

‘‘‘PowerShell‘‘‘から以下のコマンドを実行してみます。このコマンドで‘‘‘WSL‘‘‘の状況を調べることができます。この結果から‘‘‘WSL2‘‘‘の設定などが事前にされているか確認しておきます。

PS >wsl --status

f:id:ueponx:20210914005004p:plain

もし、インストールが終わっていない場合には、‘‘‘WSL2‘‘‘のインストール・設定を済ませましょう。

【参照】 uepon.hatenadiary.com

自分の環境では‘‘‘WSL2‘‘‘をインストール済みであったため、 ‘‘‘WSL2‘‘‘をアップデートし最新の状態にしておきます。(以降で使用する--updateオプションは管理者権限でないと行うことができないので、Windowsターミナルは管理者権限で起動していました)

PS >wsl --update

f:id:ueponx:20210914005007p:plain

アップデートが完了したら、一旦‘‘‘WSL‘‘‘をシャットダウンすることで、最新の状態に置き換わります。

PS >wsl --shutdown

これで‘‘‘WSL2‘‘‘のバージョンは最新のものになりました。念の為、wsl --statusで実行すると以下のように表示が変わります。

f:id:ueponx:20210916014818p:plain

‘‘‘WSLg‘‘‘の準備をする

では、‘‘‘WSL2‘‘‘でインストールされたディストリビューションからWSLgが実行されるように準備していきます。自分は‘‘‘WSL2‘‘‘では‘‘‘Docker Desktop‘‘‘を使用していたこともあり、ディストリビューションのインストールをしていませんでした。既定となっているイメージは今回は使用していません。

そこでインストール可能なディストリビューションを調べて、その中から‘‘‘Ubuntu20.04 LTS‘‘‘をインストールすることにします。

PS >wsl --list --online
PS >wsl --install -d Ubuntu-20.04

f:id:ueponx:20210914005017p:plain

f:id:ueponx:20210914005020p:plain

インストールが完了したら、以下のように実行してインストール状態を確認します。

PS >wsl --list

インストールされたのは一番下に表示されているUbuntu-20.04となります。

f:id:ueponx:20210914005030p:plain

これで、‘‘‘WSL2‘‘‘で‘‘‘Ubuntu‘‘‘を実行することができるようになりました。スタートメニューなどから新規にインストールした‘‘‘Ubuntu‘‘‘を起動して、ログインを行った後に必要になりそうなパッケージなどのインストールを行っていきます。

f:id:ueponx:20210914005034p:plain

パッケージなどのインストールは以下のようにしてみました。パッケージなどの最新化、メッセージの日本語化、‘‘‘X11のアプリ群‘‘‘(xeyes、xcalc、xlogo)をインストールしています。

$ sudo apt update
$ sudo apt upgrde
$ sudo apt install language-pack-ja
$ echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrc
$ sudo apt install x11-apps

では、Xアプリを実行してみます。コマンドラインからそのまま‘‘‘xeyes‘‘‘、‘‘‘xcalc‘‘‘、‘‘‘xlogo‘‘‘を起動してみると…正常に動作しました。

f:id:ueponx:20210914005041p:plain

特に環境変数‘‘‘DISPLAY‘‘‘の設定をしなくても動作するようになりました。スゴイ。

では、それ以外のアプリの実行も試してみます。‘‘‘Firefox‘‘‘をインストールしておけば以下のように実行することができます。

f:id:ueponx:20210914005044p:plainf:id:ueponx:20210916023418p:plain

そのほかにも‘‘‘LibreOffice‘‘‘なども実行可能でした。もうなんというかかなりスゴイ状況まできているようです。

f:id:ueponx:20210916023803p:plain

f:id:ueponx:20210916023811p:plain

‘‘‘Docker‘‘‘からは‘‘‘WSLg‘‘‘の機能はつかえるの?

ちなみに以前のように‘‘‘Dockerコンテナ‘‘‘から同様の設定を行ってテストをしてみましたが、うまく起動できませんでした。起動時のメッセージを確認したところ、環境変数‘‘‘DISPLAY‘‘‘の設定がうまくいっていないというメッセージが表示されたので、この場合には以前と同様に‘‘‘X Serverアプリケーション‘‘‘が別途必要みたいです。

f:id:ueponx:20210914005011p:plain

おわりに

最初は軽い気持ちでテストをしていたのですが、結果をみて、なんかだすごい状況になってきているような印象です。 まだまだ、初期の段階なので、実用に足りるかは未知数ではありますが、ちょっと使ってみましたがわりと実用的なスピードでは動いているようです。 これで‘‘‘Android‘‘‘のアプリとかも普通に動くようになるとWindowsでかなりの開発環境が整備されるのでは?という気分になってきます。

pc.watch.impress.co.jp