MS_WSLg - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

WSLg

概要

  • WSLg:Windows Subsystem for Linux GUI
  • Windows 11 ビルド 22000 以降で利用可能になる。

詳細

仕組み

補足(構成の中身): 「RDP で表示」という説明のとおり、
WSLg は専用のシステム ディストリビューションを裏で動かしている。

[Windows]  mstsc 相当のクライアント(統合表示)
     ▲  RDP(RAIL / VAIL)
[CBL-Mariner]  Weston(Wayland コンポジタ)+ FreeRDP + PulseAudio
     ▲  Wayland / X11
[Ubuntu 等]    GUI アプリ(gedit / GIMP / VS Code …)
部品 役割
CBL-Mariner Microsoft の Linux ディストリ。wsl -l -v に隠しで存在する
Weston Wayland コンポジタ。ウィンドウを合成
XWayland X11 アプリを Wayland 上で動かす
FreeRDP RDP サーバー側。Windows 側へ画面を渡す
PulseAudio 音声を Windows 側へ

ユーザーは Ubuntu 側だけを意識すればよいが、
「なぜ RDP が出てくるのか」を知っておくと
表示トラブルの切り分けがしやすい。

インストール

  • 初めに、Windows 11 で、WSL2 を使用可能にしておく

  • WSL2 から GUI アプリを起動

    • Windows Terminalから、WSL2 の Ubuntu 20.04 を選択

    • 以下のコマンドを実行

      sudo apt update
      sudo apt install gedit -y
      gedit ~/.bashrc
  • 画面が開かなかったので、PowerShellから WSL を更新してみる。

    wsl --update
    wsl --shutdown
  • 再度、WSL2 の Ubuntu 20.04 上からエディターで .bashrc を開く。

    gedit ~/.bashrc

WSLg

※ 検証環境は、Win10 + WSL2 環境を Win11 にアップグレードした
  環境だったので、上記のような手順になったものと思われる。

補足(wsl --update が要る理由): 上記のとおり
「画面が開かない → wsl --update で解決」という流れになったのは、
WSLg が WSL 本体(Store アプリ版)に同梱されているためである。

WSL の入手経路 WSLg
OS 同梱版(旧) 含まれないことがある
Store アプリ版wsl --update で移行) 含まれる

Windows 10 でも、バージョン 21H2 以降 + Store 版 WSL であれば
WSLg を利用できる(「Windows 11 のみ」ではない)。

補足(うまく動かないときの確認): 典型的な症状と対処。

症状 原因・対処
Error: Can't open display: :0 $DISPLAY が未設定。wsl --shutdown して再起動
旧 X サーバの設定が残っている .bashrcexport DISPLAY=...削除する(WSLg は自動設定)
日本語が豆腐(□)になる sudo apt install fonts-noto-cjk
日本語入力できない fcitx5-mozc 等を導入し、.profile で環境変数を設定

2 番目が特に多い。VcXsrv 時代の設定が残っていると、
WSLg が設定した $DISPLAY を上書きしてしまう。

参考

Microsoft Learn


Tags: 移行, Windows, Linux, Linuxサブシステム, 仮想化

⚠️ **GitHub.com Fallback** ⚠️