Windows Subsystem for Linux(WSL)でのGUIサポートの初期プレビューリリース

A year ago at BUILD 2020 we introduced our goal to bring Linux GUI applications to the Windows Subsystem for Linux (WSL) to run Linux GUI applications. We are proud to announce the first preview of this highly anticipated and open source feature!

情報源: The Initial Preview of GUI app support is now available for the Windows Subsystem for Linux | Windows Command Line

雑に翻訳。

1年前のBUILD 2020では、LinuxのGUIアプリケーションをWindows Subsystem for Linux(WSL)で動作させるという目標を紹介しました。この待望のオープンソース機能の最初のプレビューを発表できることを誇りに思います。私たちはこの機能に「WSLg」というニックネームをつけました。この機能をどのように利用できるか、どのように動作するか、そしてどのようにインストールするかについては、以下のビデオをご覧いただくか、このままお読みください。

GUIアプリケーションのサポートはどのように利用できるのか?

WSLではLinux環境を構築することができますが、これまではコマンドラインツールのユーティリティーやアプリケーションを利用することが中心でした。今回のGUIアプリのサポートにより、お気に入りのLinux GUIアプリケーションも使用できるようになりました。WSLは様々なアプリケーション、ワークロード、ユースケースで使用されているため、GUIアプリケーションのサポートをどのように使用するかはお客様次第です。以下では、Linux環境でアプリケーションを実行することを好きになってもらうために、いくつかの重要なシナリオを紹介します。

お好みのIDEを使ってLinuxプロジェクトを開発

Visual Studio Codeは、VS Code Remoteを使用して、Windowsマシン上で本格的なLinux IDEを直接使用し、Windowsと異なるWSLディストロの両方で拡張機能や設定を維持する方法を作成して、素晴らしい経験をしています(VS Codeチュートリアルを始めるには、こちらをご覧ください。WSLgは、gedit、JetBrainsベースのエディタ、gvimなどの他のIDEを実行して、Linuxアプリケーションのテスト、ビルド、デバッグを効率的に行うことができます。

ここでは、geditとgvimを実行して、WSLでLinuxのファイルを直接編集する例を紹介します。

Linuxのみのアプリケーションや、テストなどのLinuxに特化したユースケースの実行

この機能を使えば、Linuxにしか存在しないようなGUIアプリケーションを実行したり、自分のアプリケーションやテストをLinux環境で実行したりすることができます。クロスプラットフォームのアプリケーションをテストしたい開発者にとっては、マシンを変更したり仮想マシンを管理したりすることなく、Windows 10上で直接アプリケーションを実行したり、Linuxの中で簡単に実行したりできるので、非常に便利です。

WSLでTestCafe Studioを実行して、Linuxで動作するMicrosoft EdgeブラウザからWebテストを行う例を見てみましょう。

オーディオまたはオーディオサポートが組み込まれたマイクを使用するLinuxアプリケーションの構築、テスト、使用

WSL上のLinux GUIアプリケーションは、オーディオとマイクをサポートしています。これにより、アプリケーションがオーディオキューを再生したり、マイクを利用したりすることが可能になり、ムービープレーヤーや通信アプリケーションなどの構築、テスト、使用に最適です。

ここでは、Linux上のAudacityを使って音声を録音し、再生する例を紹介します。

ボーナス:WSLのGPUアクセスを活用して、Linuxアプリケーションを3Dアクセラレーションで実行する

この機能の一部として、GPUで加速された3Dグラフィックスのサポートも可能になりました。Mesa 21.0で完了した作業により、複雑な3Dレンダリングを行うアプリケーションは、OpenGLを活用して、Windows 10マシンのGPUを使用してこれらを加速することができます。これにより、ロボットシミュレーションツール「Gazebo」のような複雑なアプリケーションもスムーズに動作するようになります。この機能は、近々、さまざまなWSLディストリビューションにデフォルトで搭載される予定ですが、このブログ記事の指示に従って、適切なグラフィックドライバを入手し、お使いのディストリビューションに互換性のあるMesaバージョンがあることを確認すれば、すぐに利用することができます。

下の写真は、仮想の洞窟を探索するロボットをシミュレートするGazeboアプリケーションと、ロボットのカメラフィードとレーザーフィールドセンサーの出力を視覚化するRvizアプリケーションです。GPUアクセラレーションによる3Dグラフィックスのおかげで、このデモを60FPSで実行することができました。

この機能の仕組みは?

上のデモでは、Xサーバーを手動で起動する必要がないことにお気づきでしょうか。この機能では、Wayland、Xサーバー、Pulseオーディオサーバーなど、LinuxのGUIアプリケーションがWindowsと通信するために必要なものがすべて含まれたコンパニオンシステムディストロが自動的に起動されるからです。GUIアプリケーションの使用が終わり、WSLの配布を終了すると、システムディストロも自動的にセッションを終了します。

WSL 配管の他の部分と同様に、私たちの意図は、このコンポーネントが完全に管理され、ユーザーにとってシームレスであることです。私たちの意図は、このシステム・ディストロがユーザーにできるだけ見えないようにすることであり、wsl -l -vを実行してもこのシステム・ディストロが見えないのはそのためです。最後に、今回のシステムディストロには、マイクロソフトのCBL-Marinerディストリビューションを使用していることを発表します。CBL-Marinerは、マイクロソフトのクラウドインフラやエッジ製品・サービスに伝統的に使用されてきた内部Linuxディストリビューションですが、今回、WSL内のGUIアプリをサポートするために使用を拡張しています。この機能のアーキテクチャの全体的な概要については、以下の図をご覧ください。

この機能を実現するために行ったことや技術的な詳細については、この機能を実現した開発者が書いたブログ記事をご覧ください。

この機能を使い始めるには

この機能をWSLエクスペリエンスに完全にロールアウトする前に、初期プレビューとしてロールアウトを開始しています。Linux GUIアプリのサポートを使い始めるには、Windows 10 Insidersのプレビュービルド21364以降を使用していることを確認する必要があります。すでにWSLがインストールされている場合は、wsl --updateを実行するだけで、GUIアプリの使用が可能になります。WSLが有効になっていない場合は、wsl --installを実行すると、WSLの初期設定の一部としてWSLgが自動的にインストールされます。

インストール手順の詳細は、GitHubリポジトリのREADME: https://github.com/microsoft/wslg に記載されています。また、最高のパフォーマンスを得るために、WSLのGPUコンピューティングサポートを有効にすることを強くお勧めします。この機能を有効にする方法については、インストール手順のこのセクションをご覧ください。

フィードバック

技術的な問題や、GUIアプリケーションサポートのための機能要求は、WSLgのGithubリポジトリに提出してください。WSLの一般的な問題については、WSLリポジトリに提出してください。また、私のツイッター@craigaloewenや、このリストを使ってツイッターをしているすべてのWSLチームのメンバーをフォローすることができます。今後もWSLのエキサイティングな発表をこのブログでお届けしますので、ご期待ください。

石坂追記 日本語まわりに関して

Windows Inside Previewをアップデートして試してみました。

Windowsアプリケーションとの日本語を含むテキストのコピー・アンド・ペーストについては、これは両方向で上手くいきません。基本的にWSLのLinux環境がUTF-8で、Windows環境がUTF-16/CP932であることがその理由です。このため、WindowsのシステムロケールをUTF-8にすればワンチャンあるかもです。(試してはいません。)

WSLg/WSL2の日本語表示、日本語入力環境ですが、以下のサイトの情報が参考になりました。また、WSLgでのlinux GUIアプリケーションに対しては、WindowsのIMEからは日本語入力出来ず、linux側でIMEのセットアップが必要です。この辺は改善してほしいなと。

WSL2でつくる快適なUbuntu環境Ⅱ – Tadashi Aikawa