WSLのArchLinuxでGUIアプリを動かす
Windows Subsystem for Linux(WSL)の最新版では、WSLg(WSL GUI)機能により、LinuxのGUIアプリケーションをWindows上で直接実行できます。WSLgを使ってGUIアプリケーションを動かす方法を、定番のxeyesアプリを例に解説します。
WSLgとは
WSLgは、WSL2に統合されたGUI機能で、X11やWaylandアプリケーションをWindows上でネイティブに実行できる仕組みです。従来のようにX11サーバーを別途インストールする必要がなく、より簡単にLinuxのGUIアプリケーションを利用できます。
基本的な使い方
xeyesのインストール
まずは動作確認として、定番のxeyesアプリケーションをインストールしてみましょう。
$ paru -S xorg-xeyes
paruについては以前の記事を参照してください
xeyesの起動
インストールが完了したら、以下のコマンドでxeyesを起動します。
$ xeyes
正常に動作すれば、マウスカーソルを追跡する目玉のアプリケーションが表示されます。これでWSLgが正常に機能していることが確認できます。
トラブルシューティング
xeyesが起動しない場合やエラーが発生する場合は、以下の設定を確認・追加してみてください。
1. wsl.confの設定
WSLの設定ファイルでGUIアプリケーションの利用を明示的に有効にします。
sudo vim /etc/wsl.conf
以下の内容を追加または編集します。
[wsl2]
guiApplications = true
2. wslg.confの作成
systemdでX11ソケットのシンボリックリンクを作成する設定を追加します。
sudo vim /etc/tmpfiles.d/wslg.conf
以下の内容を記述します。
# Path Mode UID GID Age Argument
L+ %T/.X11-unix - - - - /mnt/wslg/.X11-unix
3. 環境変数の設定
ログイン時に必要な環境変数を設定するスクリプトを作成します。
sudo vim /etc/profile.d/wslg.sh
以下の内容を記述します。
export GALLIUM_DRIVER=d3d12
for i in "/mnt/wslg/runtime-dir/"*; do
[ "$XDG_RUNTIME_DIR" = "$HOME" ] && XDG_RUNTIME_DIR="/var/run/user/$UID"
if [ ! -L "$XDG_RUNTIME_DIR/$(basename "$i")" ]; then
[ -d "$XDG_RUNTIME_DIR/$(basename "$i")" ] && rm -r "$XDG_RUNTIME_DIR/$(basename "$i")"
ln -s "$i" "$XDG_RUNTIME_DIR/$(basename "$i")"
fi
done
設定の反映
これらの設定を行った後は、WSLを再起動して設定を反映させます。
# PowerShellまたはコマンドプロンプトから実行
wsl --shutdown
その後、WSLを再度起動してxeyesを試してみてください。
まとめ
WSLgを使用することで、Linux環境のGUIアプリケーションを簡単にWindows上で実行できます。基本的には特別な設定は不要ですが、環境によっては追加の設定が必要な場合があります。
Discussion