Windows 11 では、WSL(Windows Subsystem for Linux)に GUI機能(WSLg) が標準搭載されています。
これにより、Xサーバー(VcXsrv や Xming)を使わずに Linux の GUI アプリが表示可能です。
対象読者
- Windows 11 + WSL2 を使っている
- Ubuntu など Linux ディストリビューションをWSLにインストールしている
-
xclockやmatplotlib.pyplot.show()を使いたい - VcXsrvなど外部XサーバーなしでGUI表示したい
必要条件の確認
WSL2 を使っているか?
wsl -l -v
出力例:
NAME STATE VERSION
* Ubuntu Running 2
✅ VERSION が 2 であれば OK。
GUI アプリが動くか確認
xclock を試す(最小構成のGUIアプリ)
sudo apt update
sudo apt install -y x11-apps
xclock
✅ 時計ウィンドウが Windows 側にポップアップ表示されれば成功!
DISPLAY を自分で設定してはいけない
WSLg は DISPLAY を 自動で適切に設定します。
以下のような設定が .bashrc や .zshrc に入っていると 表示できなくなる原因になります。
# ❌ NG例:以下のような設定は削除またはコメントアウト
export DISPLAY=$(grep nameserver /etc/resolv.conf | awk '{print $2}'):0
修正手順:
nano ~/.bashrc
# 上記の DISPLAY 行をコメントアウト
source ~/.bashrc
Python でも plt.show() が使える
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [1, 4, 9])
plt.title("WSLg Test")
plt.show() # Windowsにプロットウィンドウが表示される!
よくあるエラーと対処法
| エラー例 | 原因・対策 |
|---|---|
Error: Can't open display: |
DISPLAYを自分で設定している → unset DISPLAY
|
Missing charsets in String to FontSet |
フォント警告 → 無視してOK |
| 何も表示されない |
wsl --shutdown → Ubuntu再起動 |
まとめ
- WSLgはXサーバー不要でWindows上にGUI表示が可能
- VcXsrvやXLaunchは不要。むしろ競合の原因になる
-
.bashrcにDISPLAYの手動設定があるとGUI表示が壊れる - Pythonでも
plt.show()で表示できる -
xclock,gedit,nautilus,matplotlibなど多数のGUIアプリがそのまま使える
おまけ:おすすめGUI対応アプリ(WSLg対応)
| アプリ | 用途 |
|---|---|
xclock |
動作確認用時計 |
gedit |
テキストエディタ |
nautilus |
ファイルマネージャ |
matplotlib |
プロット表示 |
Cantera |
燃焼・化学計算 + プロット可視化 |
✍ 最後に
WSLg のおかげで、Windows 11 でも Linux GUI アプリをストレスなく扱えるようになりました。
従来のような DISPLAY 設定やXサーバーの起動はもう不要です。