前回はWSL2のUbuntuにリモートデスクトップで接続してGUIを表示する方法を紹介しました。
今回は別の方法を使ってWSL2のGUIを利用できるようにしたいと思います。
WSLgとは
WSLgとは、Linux GUIアプリケーションを実行可能とするためのWSL2の機能です。
この機能を用いると、下記のことが可能になります。
- Windows の [スタート] メニューから Linux アプリを起動する
- Linux アプリを Windows のタスク バーにピン留めする
- Alt + Tabを使用して Linux アプリと Windows アプリを切り替える
- Windows アプリと Linux アプリ間で切り取りと貼り付けを行う
つまり、WindowsのアプリのようにLinuxのGUIアプリを起動できるということになります。
準備
この記事を作成している時点(2022年2月)では、WSLgはまだプレビュー版でいろいろ制約があります。
Windowsのバージョンの確認
WSLgが利用可能なのは「Windows 11 ビルド 22000 以上」とされています。
Windows Insider Programに参加していれば、それ以前のWindowsでも利用可能かもしれません。
Windows11を導入していて、Windows Updateを適宜適用しているとこの条件はクリアできていると思います。
なおこの画面は「ファイル名を指定して実行」で「winver」を入力すると表示できます。
WSL2のアップデート
WSL2は最新の状態にしておいたほうが良さそうです。
これはPowerShellで「wsl --update
」コマンドを実行することで行えます。
詳細は下記記事を参照してください。
WSLgプレビューの確認
WSLgのプレビュー機能が有効になっているか確認しましょう。
Windowsの設定で「アプリ」を選択し、「wsl」で検索して見ましょう。
「Windows Subsystem for Linux WSLg Preview」が見つかればOKです。
こちらもWindows11でWindows Updateを適用していれば自動的に導入されるようです。
GPUドライバの更新
WSLgを使うためにはGUIのドライバがある程度新しい必要があります。
Intel製のGPUの場合
今回試しているPCはMicrosoftのSurface 7 ProでGPUはIntel製になります。IntelのGPUの場合は下記のサイトから最新版をインストールしておきます。
ちなみに、私が試した場合は最新バージョンは「30.0.101.1340」で、私のWindows11に導入されていたのは「27.20.100.9621」でかなり差がありました。
実は「27.20.100.9621」でもWSLgが使えるのですが、念のためアップデートしておきました。
ただし、Intelのサイトからダウンロードしたexeファイルを実行しただけではドライバは更新されず、手動でドライバを選択する必要がありました。
AMD製のGPUの場合
AMD製の場合は下記のサイトからドライバを入手しましょう。
「The Radeon Software Adrenalin 2020 Edition installation package can be downloaded from the following links:」のところのリンクからダウンロードできます。
この記事の作成時点では「DX12-WSL-Radeon-Software-Adrenalin-20.45.01.31-Dec15.exe」というドライバがダウンロードできました。
このドライバはファイル名からすると、AMDのドライバ配布サイト(下記)で配布するものと違うのかもしれません。
AMD製のGPUを使っている方で、WSLgがうまく機能しない場合は、WSL用のRadeon Softwareを入手しインストールしてみる価値があるかもしれません。
nvida製のGPUの場合
GPUがnvidia製の場合は下記のサイトからドライバを入手するようにMicrosoftでは指定しています。
しかしこのページを見てみると、nvidiaのドライバ配布サイトからダウンロードするように記載されています。
どうも新しめのnvidaドライバ(GEFORCEドライバ)を入れておけば、WSLgに対応しているようです。
DISPLAY環境変数の確認
DISPLAY変数をカスタマイズするとWSLgを邪魔してしまうことがあります。
特に下記の記事のようにWindowsにXサーバを導入してWSLのGUIを表示したことがある場合は注意が必要です。
DISPLAY変数の値は下記のコマンドで確認できます。
$ echo $DISPLAY :0
この結果のように「:0」と表示されない場合はどこかでDISPLAY変数を設定してしまっているので、.bashrc・.profile・.bash_profile等のファイルを確認してみてください。
Linuxのパッケージの更新
念のためインストールされているパッケージを更新しておきましょう。
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get clean
GUIアプリの実行
ここまでの準備ができたらLinuxのGUIアプリを実行してみましょう。
コマンドラインでの実行
ここでは簡単なアプリが入っているx11-appsパッケージを試してみましょう。
$ sudo apt-get install x11-apps
このパッケージには小さなアプリがいろいろ入っているのですが、お試しとして「xeyes」というアプリを起動してみます。
$ xeyes &
WSL2を起動して初めてGUIアプリを起動する場合は、アプリが起動するまで10秒程度待つ場合があります。
これでWindowsに下のようなウィンドウが表示されれば成功です。
ちなみにタスクバーにはLinuxのペンギンアイコンが追加されます。
もちろんAlt + Tabを使用して Linux アプリと Windows アプリを切り替えることもできます。
もう少し実用的なアプリとしてgeditを試してみます。
$ sudo apt-get install gedit $ gedit &
これでエディタ画面が立ち上がります。
デフォルトの状態では日本語を入力することはできませんが、Windowsのアプリからコピー&ペーストすることはできます。
WSL2側に日本語入力システムを導入すれば日本語の入力もできるっぽいですが、試していません。
Windowsのスタートメニューからの起動
なんとWSL2(Ubuntu)にインストールしたGUIアプリはWindowsのスタートメニューの「Ubuntuフォルダ」以下に追加されます。
ただUbuntuにインストールした全てのアプリが表示されるわけではにないようです。
Windowsのスタートメニューに追加される場合と追加されない場合の違いはよくわかりませんでした。
このメニューを選択することでもLinuxのGUIアプリを起動することができます。
WSLgの課題
あまり使い込んだわけではありませんが、試してみて気づいたのは、WSLgできるのはLinuxの単独のGUIアプリをWindowsに表示させることでだけだということです。
つまりLXDE等のデスクトップ環境をWindows側に表示させることはできません。
メインはコマンドラインで使いつつ、ときどきGUIを使いたいというと気にはWSLgが適していますが、マウス主体でLinuxを操作したいという方にはWSLgはちょっと向かないかもしれません。
そのような場合はリモートデスクトップでWSL2に接続することをオススメします。
まとめ
今回はWindows Subsystem for Linux(WSL2)に導入される予定のWSLgを使ってLinuxのGUIアプリを使用してみました。
Windows11では既にWSLgを利用することができ、ほとんど設定不要でLinuxのGUIアプリを起動することができます。VcXsrvなどのXサーバアプリの設定が面倒な方にはうれしいのではないかと思います。
次回はwsl.confファイルを使ってWSL2の設定を行います。
コメント