WSLが登場して以来、 Windows で Ubuntu が動作するようになりとても快適になりました。
コマンドをCLIで叩いている分には問題ないのですが、ときどきブラウザなどの GUI アプリを起動させたくなるときが有ります。
Windows11 では そのために WSLg という機能が提供されていますが、Windows10では残念ながらその機能は使えません。
そこでこの記事では Windows10 WSL にてGUIアプリを起動させる方法を説明します。例としてブラウザの chrome を起動させます。
動作確認は Windows10 と WSL Ubuntuの下記のバージョンで行いました。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.5 LTS"
Windwos 11 WSLg については下記のサイト偽爪が有ります。
WSL で chrome 起動を試してみる
まず WSL 上で Chrome をインストールしてそのまま起動させてみます。下記のように X Window System 周りで怒られてしまうはずです。
$ sudo apt-get install google-chrome-stable $ google-chrome [31841:31841:0915/190133.136346:ERROR:ozone_platform_x11.cc(240)] Missing X server or $DISPLAY [31841:31841:0915/190133.136393:ERROR:env.cc(255)] The platform failed to initialize. Exiting.
これを VcXsrv というXサーバーにて解決してみます。
Windows 側の設定
まず Windows 側の設定を行います。WSL 上ではなく Windows ネイティブ側の設定です。
VcXsrv のインストール
VcXsrv というツールをインストールします。下記のサイトからインストーラをダウンロードできます。
基本的にデフォルト設定のままインストールしてOKです。
Windows ファイアウォールの設定
VcXsrv という表示を制御する X11 サーバにて WSL上のアプリを描画するのですが、そのままでは Windows のセキュリティに阻まれWSLとVcSxrvが通信できません。
下記のように設定をします。
まずスタートボタンから Windowsの設定を開きます。
そして「ファイアウォールとネットワーク」をクリックし、次に「ファイアウォールによるアプリケーションの許可」おクリックします。
すると許可するアプリケーションを選択するチェックボックスのウィンドウが表示されます。下図の赤枠です。
あとは 「VcXsrv」という行を探して、その行の左端のチェックボックスとドメインとパブリックのチェックボックスにチェックを入れます。下図の赤枠を参照してください。これでWindows ファイアウォールの設定は完了です。
VcXsrv の起動
VcXsrv はサーバなので先に起動させておく必要が有ります。
スタートメニューから XLaunch というアプリを実行してください。もし見当たらなければ、デフォルトでは “C:\Program Files\VcXsrv\xlaunch.exe” にインストールされているはずなので直接実行可能ファイルを実行してください。
実行するとアプリの設定画面のウィンドウが表示されます。基本的にデフォルトでOKですが、下記の赤枠だけ変更してください。「Disable access control」のチェックを入れてください。下記の赤枠のところです。あとはそのまま進めていって起動させてください
これで Windows 側の設定は完了です。
VcXsrv の自動起動
もしWindows を起動させるたびに VcXsrvを起動させるのが面倒だったら Xlaunch をスタートアップに追加すればOKです。このとき設定ファイルを渡してあげる必要が有ります。設定情報は、Xlaunchを起動するときに「Save Config」というようなボタンが表示されるはずなのでそこで保存します。
xlaunch.exe を直接スタートアップに追加するのではなく、下記のようなショートカットを作ってそれをスタートアップに追加するといいでしょう。
“C:\Program Files\VcXsrv\xlaunch.exe” -run “C:\User\username\Documents\config.xlaunch”
WSL 側の設定
WSLで 側では DISPLAY 環境変数の設定を行ってください。下記のようにすればOKです。Windows側の VcXsrvに表示をお願いする設定です。
あとは普通に chrome を起動させれば良いです。GUIで Chromeブラウザが起動するはずです。
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 google-chrome
DISPLAY環境変数の設定を毎回するのが面倒だったら.bashrcにe記載しておくと楽かもしれません。
まとめ
今回はWindows10での WSL GUIアプリの起動の方法を説明しました。Windows側で VcXsrvというサーバをインストールすればOKです。ファイアウォールの設定は忘れやすいので注意してください。
コメント