
Windows10のWSLでX11アプリケーションを実行してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
データアナリティクス事業本部の藤川です。
Windows 10向けに、WSL2のGUI対応(WSLg)のプレビューが始まりました。どんな拡張になるか楽しみです。
今回は、WSLgのご紹介ではありません。オープンソースのX Serverで、WSL(WSL2でなくても構いません)に接続してみました。
ふと思い出したように、X Window Systemを使ってみたくなりました。Windows 10環境のWSL(または、Docker)上でX11アプリケーションを実行してみましたので手順をご紹介します。
概要
- Windows 10環境のWSL(または、Docker)上でX11アプリケーションを実行します。
- X11アプリケーション(X Client)の画面(X Server)をWindows 10上に表示します。
X ServerにはオープンソースのVcXsrvを使用します。
作業手順
次の通り、作業を進めます。
- WSLにX11をインストールします。
- WindowsにVcXsrvをインストールし、設定します。
- Windowsのファイヤーウォールを設定変更します。
構築方法(WSL)
X11をインストール
WSL環境にX11をインストールします。
sudo apt install x11-apps
構築方法(Windows)
VcXsrvをインストール
- SourceForge.netから
VcXsrvをダウンロードします。
- ダウンロードした
vcxsrv-64.1.20.9.0.installer.exeファイルを実行します。 Nextボタンをクリックします。
Installボタンをクリックします。
Closeボタンをクリックします。
VcXsrvのインストールが終了します。
VcXsrvを起動
スタートメニューを開きます。VcXsrvフォルダを開き、XLaunchアイコンをクリックします。
- X Clientの開き方を指定します。ここでは、
Multiple windowsを選択してみます。 Display numberを-1にします。次へボタンをクリックします。
- X Server起動時にX Clientを開くか指定します。ここでは、
Start no clientを選択してみます。 次へボタンをクリックします。
Extra settingsダイアログが開きます。ここでは、次の通りに設定してみます。項目 設定 Clipboard チェックする + Primary Selection チェックする Native opengl チェックする Disable access control チェックする Additional parameters for VcXsrv <空欄> 次へボタンをクリックします。
完了ボタンをクリックします。
VcXsrvが起動し、常駐します。タスクトレイを開くと、XLaunchアイコンが表示されます。ここで、<ホスト名>:0.0のコロンより右側がディスプレイ番号です。
- このとき、ウイルス対策ソフトが
VcXsrvを検知して、起動する場合があります。ファイヤーウォールを設定変更してください。
ファイヤーウォールを設定変更
- Windowsのファイヤーウォール設定を確認してください。インストールされているウイルス対策アプリケーションによって設定画面が異なるため、詳細は割愛します。
6000 + ディスプレイ番号のポートが開いていることを確認します。6000番ポートが開いていれば問題ありません。(ディスプレイ番号が:1.0の場合は6000-6001)
使用方法
1.WindowsのIPアドレスを確認します。localhost、127.0.0.1ではなく、WSL(または、Dockerコンテナ)から見たWindowsのIPアドレスです。
2.WSL(または、Dockerコンテナ)のターミナルで、DISPLAY環境変数に、IPアドレス、ディスプレイ番号を設定します。
export DISPLAY=192.168.10.11:0.0 echo $DISPLAY
3.WSL(または、Dockerコンテナ)のターミナルで、xeyes等のX11アプリケーションを実行します。
xeyes
4.Windowsのデスクトップ上に、xeyes等のX11アプリケーションが表示されます。
5.タスクトレイのXLaunchアイコンにマウスオーバーすると、1 clientと表示されていますことが分かります。
さいごに
WSL2のGUI対応(WSLg)に期待していますが、現状でも、Windows上でX11アプリケーションを表示させることができます。
ポートフォワーディングを設定すれば、EC2上で稼働するX11アプリケーションの画面を、手元にあるWindowsのデスクトップに表示させることが可能です。
その座をVNCに奪われてしまっているようにも思いますが、X Server/Clientは健在です。







