Windows 10でWSLg (WSL GUI) をセットアップする

2021年6月14日WSL 2Linux,Ubuntu,Windows,WSL2

Windows 10のInsider Previewに「WSLg(Windows Subsystem for Linux GUI)」のプレビュー版が配信されたようですので、早速試してみました。

以前はVcXsrvなどのソフトを使用しないとWSL2でGUIアプリが使えませんでしたが、将来的にはVcXsrv不要で、よりシームレスにLinux用のGUIアプリが利用可能になるようです。また、WSL2自体の初期設定も簡素化されるようです。

前書き

今回のテストは、Windows 10 Insider PreviewのDevチャンネルに参加しているパソコンで行っています。winverコマンドで確認したところ、ビルド番号は21390.1010でした。記事執筆時点(2021年6月13日時点)のリリース版「21H1」では利用できません。

また、公式の解説ではまっさら状態からのWSLg設定方法が紹介されていますが、今回は元々VcXsrvでのGUIアプリ利用が可能だったパソコンで試してます。

WSLgの解説、初期設定方法などはこちらを参考にしています。

ちなみに、本記事と同じ方法で、Windows 11 Insider PreviewでもWSLgが利用できます。Windows 11版の記事も用意していますので、良ければこちらもご覧ください。

WSLgのシステム要件

記事執筆時点(2021年6月13日時点)、WindowsのInsider Previewに参加する必要があって、それのビルド21362以降が必要です。コマンドプロンプトなどから「winver」コマンドを実行するとビルド番号が確認できます。

また、仮想GPU(vGPU)の有効化も推奨されています。有効にしたい場合は、WSLをサポートするGPUドライバーをインストールします。上記参考リンクから、GPUメーカー各社のドライバーのダウンロードページへたどれます。(私はインストールせずに試しました)

WSLgの初期設定

  • 今までWSLをインストールしたことがないパソコンにインストールする場合
  • WSLをインストール済みだが、はじめてGUIアプリを使いたい場合
  • 従来からVcXsrvなどを利用してGUIアプリを使っていた場合

それぞれのパターンについて説明します。1つ目、2つ目は、前述の参考リンクを翻訳しただけの内容です。私が実際に行ったのは3つ目の方法になります。

まっさら状態からWSLgを利用するには

今までWSLを利用したことがないパソコンにWSL2を入れてWSLgを利用するには、次のコマンドを実行します。

従来「Windowsのオプション機能オン/オフ画面から"Linuxなんたら"を有効にして、再起動して、Ubuntuアプリをインストールして」というステップを踏んでいましたが、その代わりに次のコマンドを実行します。

wsl --install -d Ubuntu

再起動を促されたら、再起動します。

次にスタートメニューからUbuntuアプリを起動します。初回起動時は、Linux用のユーザー名とパスワードを設定します。これらはWindowsのユーザー名、パスワードとは違くて構いません。

これだけで環境構築は完了です。(めっちゃ簡単になってる・・・)

既存のWSLでWSLgを利用するには

まず、WSLを更新するためwsl --updateを実行します。

次に、LinuxディストリビューションがWSL2モードで動いているか確認するためwsl --list -vを実行します。下記のように、WSLgを使いたいディストリビューションのVERSIONが「2」となっていればOKです。

PS C:\> wsl --list -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2
  Ubuntu          Running         2

もしなっていない場合は、wsl --set-version Ubuntu 2を実行します。「Ubuntu」の部分は、利用したいディストリビューション名に置き換えてください。また、変更の適用にはWSLの再起動が必要なため、管理者権限のコマンドプロンプトかPowerShellからwsl --shutdownを実行します。

従来からVcXsrvなどでGUIアプリを利用していた場合は

当サイトでは従来、「WSL2のUbuntuでGUIアプリを利用するにはVcXsrvというソフトが必要だ」と説明していて、Ubuntu側にもVcXsrvへ表示を出力するよう設定していました。

この設定を行っているパソコンでWSLgを使うには、Ubuntu側の設定を一部削除する必要があります。nano ~/.profileなどで.profileファイルを開き、次の行を削除(またはコメントアウト)します。
↓ #をつけるとコメントアウトできます。
# export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0

私の環境では、特にwsl --updateを行ったりせず利用できました。

GUIアプリをインストールする

WSLgの設定が終わったら、GUIアプリをインストールしましょう。インストール方法はごく普通です。

スタートメニューからUbuntuアプリを起動します。まずはパッケージ情報を更新しておきましょう。

sudo apt update

GUIアプリのインストールは、通常通りapt installで行います。ここではx11-apps (xeyesやxcalcなど)やgeditをインストールする例を示します。

sudo apt install x11-apps -y
sudo apt install gedit -y

WSLgでGUIアプリを実行する

すべて整いましたので、早速GUIアプリを実行してみましょう。WSL2のUbuntuから起動する場合は、普通に実行したいコマンドを入力します。ここではxeyes、xcalc、Firefoxを起動してみました。多重起動したい場合は、コマンド末尾に&をつけます。

WSL2のUbuntuからGUIアプリを実行する

Windows側のコマンドプロンプトやPowerShellから実行する場合は、「wslgコマンド」を使用します。wslgコマンドでGUIアプリを実行する際の書式は次の通りです。ディストリビューション名を省略した場合は、デフォルトのディストリビューションで起動するようです。また、wslgコマンドで起動すると、制御がすぐに帰ってきますので、次々にソフトを起動できます。

wslg -d <ディストリビューション名> <起動したいコマンド>
PowerShellからGUIアプリを実行する

スタートメニューにもWSLgでアプリを起動するショートカットが作成されますので、こちらから起動することもできます。このショートカットは、上記wslgコマンドを実行するショートカットです。

スタートメニューからGUIアプリを実行する

起動もめっちゃ簡単ですね。ちなみに、Ubuntu Desktopなどのデスクトップ環境の起動方法は分かりませんでした。

使ってみた印象

今まで、結構苦労してWSL2でGUIアプリ実行環境を構築していましたが、その苦労はほぼゼロになっています。それだけでなく、WSL自体の初回設定も不要になり、いきなりwsl --install -d Ubuntuを実行するだけでWindowsの設定変更やUbuntuアプリのインストールまで行ってくれるなど、全体的に手順が簡素化されています。

どれくらい簡素化されたかというと、当サイトの3記事分がwsl --install -d Ubuntuだけで済んでいます。

また、Ubuntu側での設定変更も不要で、スタートメニューにもGUIアプリのショートカットが作成されるなど、よりシームレスにLinux GUIアプリが使えるようになりました。音も出ますので、FirefoxでYouTubeを開けば即動画視聴できます。

ただ、現時点では次のような不具合も見られます。(当方の環境だけの話かもしれませんし、回避策があるかもしれません。今のところ充分な検証はできていません)

  • ウィンドウタイトルの日本語が文字化けする
  • Fcitx+Mozcを入れたが、日本語入力が不安定(半角/全角キーが効かないことがある。変換候補が変なところに表示される)
  • Firefoxだと右クリックの挙動がおかしい(右クリックした瞬間に、コンテキストメニューの項目がクリックされる? Chromeだと問題ない)
  • 動画を再生したりすると、結構負荷がかかる(仮想GPUドライバーを入れてないからかも)
  • 「Ubuntu」アプリを削除しても、スタートメニューのWSLgアプリへのショートカットが削除されない
  • ディスプレイのスケーリングに対応していない(HiDPI環境では小さく表示される)
  • GUIアプリを落としてもVmmenプロセスが高負荷のままになることがある(wsl --shutdownすると改善される)

これらは、今後のバージョンアップでの改善に期待したいと思います。