WSL2でGUIアプリケーションを動かす

先に結論

Microsoft公式ブログで、やり方が紹介されていました。それを参考にしたら簡単にできたよ、という話です。

自分の環境

Windows

Windows 10 Home

バージョン2004(OSビルド19041.508)

WSL2

WSL2はインストール済み。 WSL2のインストールガイドは こちら

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

手順

今回は、ディスプレイサーバーをWindowsにインストールすることで対応する。

ちなみに、WSLにデスクトップ環境(ディスプレイサーバー含む)を構築し、Windowsからリモートデスクトップ接続する、といった方法もある。こちらの手順も上述のMS公式ブログに書いてあります。

X Windows Serverの用意

VcXsrv Windows X ServerをWindowsにインストールする。ブラウザからインストーラーをダウンロードしてインストールした。 Installerはデフォルト設定のままインストール。

インストール後、XLaunchを起動。 アクセスコントロールをオフ(Disable access controlにチェックを入れる)、 Save configuration を押して設定を保存する。

Windowsファイアウォールの警告が出るので許可する。

WSLの用意

DISPLAY環境変数を設定する。

export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"

動作確認

sudo apt install x11-apps
xeyes

日本語対応

sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
sudo fc-cache -fv

参考: https://qiita.com/momomo_rimoto/items/51d533ae9529872696ce#4-gui%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%82%92%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B

自動起動設定

動作確認が取れたら、設定を自動化する。

Windows

スタートアップフォルダに、 Save configuration を押したときに作成されたconfig.xlaunchファイルを置いておく。VcXsrvが自動起動するようになる。

参考: https://www.atmarkit.co.jp/ait/articles/1812/06/news040.html

WSL

以下をシェルの設定ファイル(例: .bashrc)に追記し、自動で設定されるようにする。

export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"

その他

自分の場合、使いたかったアプリを起動したら、以下のエラーが出た。

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

-nowgl を追記したら消えた。

参考: https://veresk.hatenablog.com/entry/2020/02/26/190000

-[no]wgl
    Enable the GLX extension to use the native Windows WGL interface for hardware-accelerated OpenGL

参考: https://gist.github.com/ctaggart/68ead4d0d942b240061086f4ba587f5f

GUIアプリのサポートはWSL公式でサポートする見通し

2020/05のMSの公式ブログで言及されている。 2020年末にさらなる報告があるかも、とのこと。

参考: https://devblogs.microsoft.com/commandline/the-windows-subsystem-for-linux-build-2020-summary/#wsl-gui