Windows11のWSLgで外部Xサーバを使う

今年(2025年)10月をもって、Windows 10のサポートが終了する予定です。そのため、今後のセキュリティや安定性を考慮すると、本格的にWindows 11への移行を検討する必要があります。

しかし、移行に際して技術的な課題がいくつか存在します。中でも厄介なのが、WSLg(Windows Subsystem for Linux GUI)におけるXサーバの互換性問題です。多くのX11ベースのアプリケーションはWSLg上でも問題なく動作しますが、一部のGUIアプリケーションでは描画崩れやレイアウトの不具合が発生することがあります。

このような不具合を回避するため、WSLgではなく外部のXサーバ(例:VcXsrvやX410など)を用いる方法が有効です。ただし、Windows 11でこのような構成を取るには、手動でDISPLAY環境変数を適切に設定する必要があります。

以下に、WSL上でDISPLAYを自動設定するための~/.bashrc追記用スクリプトを紹介します。

# 日本語環境のWindowsで、ipconfig.exeからIPv4アドレスを取得してDISPLAYに設定
WIN_IP=$(/mnt/c/Windows/System32/ipconfig.exe \
| iconv -f SHIFT-JIS -t UTF-8 \
| grep "IPv4 アドレス" \
| grep -v "169.254" \
| head -n1 \
| awk -F: '{print $2}' \
| tr -d ' \r')
export DISPLAY=${WIN_IP}:0.0

解説:

  • ipconfig.exe: Windows側のネットワーク情報を取得するコマンドです。
  • iconv -f SHIFT-JIS -t UTF-8: 日本語Windowsではipconfigの出力がShift_JISのため、UTF-8に変換しています。
  • grep "IPv4 アドレス": 有効なIPv4アドレスの行を抽出します(※英語環境では “IPv4 Address”)。
  • grep -v "169.254": 自動構成のリンクローカルアドレスを除外します。
  • awk -F: '{print $2}': コロン区切りでIP部分を抽出します。
  • tr -d ' \r': 余分な空白や復帰コードを除去します。

この設定を行うことで、WSLから外部Xサーバへの描画が安定し、WSLg特有の不具合を回避することが可能になります。

コメント

  1. 4f10w5