WSL上にXサーバをインストールしてGUIを実現する(VcXsrv編):Tech TIPS
WSL(Linux)環境でGUIのアプリを利用するには、GUIの描画を行うXサーバを用意する必要がある。Windows 10で利用できるXサーバはいくつかあるが、今回はVcXsrvというXサーバの導入方法を解説する。
対象OS:Windows 10 Fall Creators Update(バージョン1709)以降(64bit版のみ)
Windows 10に「WSL(Windows Subsystem for Linux)」をインストールすると、Linux向けのプログラム(バイナリファイル)をそのまま実行できるようになる。現在では、UbuntuやDebian、SUSE Linux、WLinux(これはDebianベースの有償製品)など、数種類のLinuxディストリビューションを導入できるようになっている。WSLの導入方法については、以下の記事を参照していただきたい。
LinuxをクライアントOSとして利用する場合、一般的には「Xサーバ(X Window System)」を使ったGUIのデスクトップ環境を構築して利用することが多い。しかしWSLをインストールしただけでは、Xサーバはインストールされないため、CUIのコンソールしか使えない。
そこでWindows 10上にXサーバをセットアップすれば、WSL上のLinuxアプリでもGUIで利用できるようになる。本稿ではその手順を一つずつ解説する。
Windows 10上で動作するXサーバの種類
Xサーバは、Windows OSで言えば、GUIのウィンドウや部品などを描画、管理したり、キーボードやマウスなどのデバイスを管理したりする部分だけを独立させたようなものと考えればよいだろう。Xのサーバとクライアント間はXプロトコルで通信しており、同一システム上になくても動作するし、Xサーバを実現するソフトウェアも、機種やアーキテクチャなどは問わない。
Windows 10で利用できるXサーバソフトウェアは幾つかある。
ソフトウェア | 概要 |
---|---|
VcXsrv | フリーのXサーバ |
Cygwin/X | フリーのXサーバ。UNIX互換環境のCygwinの一つとして提供されている |
Xming | 以前は無償だったXサーバ。現在では利用形態に応じていくらか支払う必要がある |
MobaXterm | sshクライアント/ターミナル機能などが統合されているXサーバ製品。機能限定の無償版もある |
X410 | Microsoft Storeで販売されている有償のXサーバ。ストアアプリなので、導入やバージョンアップなどが容易 |
Windows OS向けの主なXサーバソフトウェア |
どれを使っても構わないが(Xサーバは描画を担当するだけなので、できることはどれもほぼ同じだが、管理機能などがいくらか異なる)、今回は無償(GPLライセンス)で利用できる「VcXsrv」の導入方法を紹介する。
VcXsrvの入手
VcXsrvは、以下のサイトにアクセスして[Download]ボタンをクリックすると入手できる。原稿執筆時点での最新版は、Ver.1.20.1.4であった。
- 「VcXsrv Windows X Server」のダウンロードページ[英語](SourceForge)
VcXsrvのインストール
ダウンロードしたインストーラをダブルクリックして起動し、インストールオプションやインストール先などを指定してインストールする。
VcXsrvの起動
インストールが完了したら、[スタート]メニューの[VcXsrv]−[XLaunch]を起動する。起動するとウィザード画面が表示され、幾つかの選択肢が表示されるが、通常は全部そのままでよいだろう。
以上が完了するとXサーバが起動する。Xサーバの実行中はシステムトレイにVcXsrvのアイコンが表示されており、これをクリックすると設定の確認などができる。
VcXsrvが自動的に起動されるようにする
起動したVcXsrvは、ユーザーがサインアウトすると終了する。次回またWSLとXサーバを利用したければ、手動でVcXsrvを起動する必要がある。これが面倒なら、Windows OSのスタートアップフォルダにXLaunch(の設定ファイルへのショートカット)を登録しておくとよいだろう。
[Windows]+[R]キーを押して「ファイル名を指定して実行」ダイアログを表示させ、「shell:startup」と入力すると、ユーザーの「スタートアップ」フォルダがエクスプローラで開かれる(TIPS「スタートメニューやスタートアップなどの特殊フォルダの場所を素早く開く」参照)。ここに、起動ウィザードの最後のステップで作成した設定ファイル(〜.xlaunchファイル)へのショートカットを作成しておくと、次回サインイン時にはウィザードが表示されずに自動的に起動する。
WSLからXサーバを利用するためにDISPLAY環境変数を設定する
Xサーバを導入したら、次はクライアント側(WSL側)の準備を行う。といっても、「DISPLAY=」という環境変数で、Xサーバの場所(接続先のホストやディスプレイ番号など)を指定するだけである。WSL上でのアプリ実行時にこの変数がセットされていると、アプリは自動的にそのXサーバに接続してGUIの描画を行う。
DISPLAY環境変数に設定する値の書式は次の通りである。実際にこれをシェル(bashなど)から実行する場合は、先頭に「export」を付けて、シェル外から参照できるようにしておくこと。
DISPLAY=<ホスト名/IPアドレス>:<ディスプレイ番号>.<スクリーン番号>
設定例:
DISPLAY=xserver:0.0 ……xserver上のXサーバへ接続
DISPLAY=localhost:0.0 ……ここから4つはすべて同じ意味。ローカル上のXサーバへ接続
DISPLAY=127.0.0.1:0.0
DISPLAY=:0.0
DISPLAY=:0 ……最も省略した形式
接続先としてはホスト名やFQDN名、IPアドレスなどを指定できる。ただし相手側(Xサーバ側)では、リモートからのアクセスを許可するように設定しておく必要がある。
今回紹介しているように、ローカルのWindows 10上で動作しているXサーバへ接続するだけなら、ローカルループバックアドレスの「localhost」「127.0.0.1」を指定するか、それを省略して「DISPLAY=:0.0」や「DISPLAY=:0」を設定しておけばよい。
ディスプレイ番号やスクリーン番号は、複数の画面がある場合に表示先を指定するものだ。「:0.0」としておくとデフォルトの画面が表示対象となる。
WSLを起動する度にDISPLAY変数を手動で設定するのは面倒なので、通常は「~/.profile」(bashの初回起動時に実行される)か「~/.bashrc」(bash起動時に毎回実行される)の中に次のように記述しておく(「~」はユーザーのホームディレクトリ)。
export DISPLAY=:0.0
DISPLAY環境変数の設定
デフォルトのXサーバの場所(接続先)は、DISPLAYという環境変数で設定する。ここではbashの~/.profile(最初に1回だけ読み込まれるスクリプト)で設定している。このあたりは利用しているディストリビューションやシェル環境などに応じて変更すること。
Xサーバ対応アプリを実行する
DISPLAY変数の準備ができたら、次は実際にXサーバ対応のアプリを起動してみる。といってもWSLをインストールしただけではそのようなアプリは何もインストールされていないので、手動で追加インストールする。
その手順はディストリビューションごとに異なる。例えばUbuntuの場合なら、「sudo apt install x11-apps」とすると、基本的なXサーバ対応のアプリやツールなどがインストールされる。
x11-appsをインストールできたら、xeyesを起動してみよう。目玉の画像が表示されたらインストールは成功である。
DISPLAY変数の設定などが正しくない場合は次のようにエラーが表示されるので、設定などを確認すること。
$ xeyes
Error: Can't open display: ……Xサーバに接続できないというエラー
$ echo $DISPLAY ……DISPLAY変数の確認
……設定されていない
$
なお、DISPLAY環境変数を設定していなくても、「xeyes -display :0.0」のように-displayオプションを付ければXサーバで表示できる(このオプションはX対応アプリならどれでも利用可能)。これで動作チェックなどを行ってもよい。
今回はXサーバのインストール方法を紹介した。Windows OSにインストールしているフォントを、このXサーバで利用できるようにする方法については、次の記事を参照のこと。
これ以外の活用方法(ウィンドウマネージャやデスクトップ環境、ターミナルエミュレータ、その他のツールの使い方)については、今後別TIPSで紹介する。
Copyright© Digital Advantage Corp. All Rights Reserved.