DebianをWindows10上で動かす その11: GUIを使う (リモートデスクトップ編)

前回はWSL (Windows Subsystem for Linux)上に導入したDebianでネットワークドライブを自動マウントする方法を紹介しました。

今回はWSLでGUIを使う方法を再考したいと思います。

これまで紹介した方法

WSLでGUIを使う方法としてWindows10にX server (VnXsrv)を導入して、WSLのGUIを表示させる方法を紹介してきました。

今回はWindows Subsystem for Linuxを使って導入したDebianでGUIを使えるようにしてみます。WindowsにフリーのXサーバであるVcXsrvを導入することで、GUIアプリも簡単に使うことができます。GUIアプリが必要な方は試してみてください。

WSLで起動した各アプリのウィンドウを個別に表示させる場合はこの方法は便利なのですが、WSLのデスクトップ画面を表示させる場合は、キーボードが勝手に英語に切り替わってしまったり不満が残ります。

何よりも、Windows10にVnXsrvというアプリを導入しなければ行けません。

今回はVnXsrvを使わずにWSLのデスクトップ画面を表示させる方法を紹介します。

リモートデスクトップ

Windowsには他のPCの画面を表示するリモートデスクトップという機能があります。

リモートデスクトップの接続

この機能をつかってWSLに接続し、Linuxのデスクトップ画面を表示させようというわけです。

xrdpのインストール

WSLでxrdpの接続を受け付けるにはxrdpというパッケージを導入する必要があります。合わせてデスクトップ環境としてMATEを導入しておきます。

$ sudo apt-get install xrdp mate-desktop-environment-core

デスクトップ環境を入れるので大量のパッケージが導入されます。時間があるときにやるようにしましょう。

インストールの途中でいろいろ質問が出てくるかもしれませんが、基本的はデフォルトの設定で良いようです。TABキーで「了解」を選択して進んでいきます。

インストールが終わったらxrdp設定ファイルを修正します。

xrdpの設定ファイル/etc/xrdp/xrdp.iniにあるので、このファイルを編集して「port」で始まる行を

port=3390

に変更しておきます。

ここまで完了したらxrdpを起動しておきます。

$ sudo service xrdp restart

xrdpを起動すると次のようなセキュリティの警告が表示されるかもしれません。

WSLに接続するのがWSLを動かしていWindowsだけならばここは「キャンセル」として問題ありません。

xrdpのセキュリティの警告

vnc4serverのインストール

WSLのグラフィクス描画を担当するvnc4serverをインストールします。

$ sudo apt-get install vnc4server

vnc4serverの設定ファイルは/etc/vnc.confにあるのですが、試したところ特に変更が不要なようでした。

リモートデスクトップの接続

WSL側の準備ができたのでそれではリモートデスクトップで接続してみます。

Windowsのスタートメニューから「リモートデスクトップ接続」を探して実行します。

次のようなウィンドウが出るので「オプションの表示」を選択しましょう。

リモートデスクトップの接続でオプションを表示

これでリモートデスクトップのオプションが設定できるので「画面」タブを選択します。

画面サイズを調整

「画面の設定」のエリアでリモートデスクトップの画面サイズ(=WSLのデスクトップ画面のサイズ)を設定できます。

Windows画面全体をリモートデスクトップで覆われたくないときはここで画面サイズより小さい解像度を設定しておきます。

設定が終わったら「オプションの非表示」を選択してオプションの設定画面をクローズします。

次のようなウィンドウがでるので「127.0.0.1:3390」と入力して「接続」を選択します。

WSLに接続

すると次のような警告が出るので、チェックボックスを選択してから「はい」を選択します。

リモートデスクトップの警告

これでリモートデスクトップのログイン画面が表示されるはずです。

「Session」で「XVnc」を選択したあと、WSLのユーザ名とパスワードでログインします。

リモートデスクトップへのログイン

Sessionの欄で「Xvnc」を毎回選ぶのが面倒な方は「/etc/xrdp/xrdp.ini」というファイルを編集して、「Session Types」というコメントがあるところで「Xvnc」のセクションが先頭に来るようにしてください。

;
; Session types
;

[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
#xserverbpp=24
#delay_ms=2000


[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

このれいでは「Xvnc」のセクションと「Xorg」のセクションを入れ替えています。

これでMATEのデスクトップが表示されればOKです。

リモートデスクトップで表示したMATEのデスクトップ

MATEが日本語になっていない場合は 「/etc/default/locale」というファイルを下記のように変更してからxrdpを再起動してみてください。

LANG=ja_JP.UTF-8
LANGUAGE=ja
LC_ALL=ja_JP.UTF-8
LC_CTYPE=ja_JP.UTF-8

デフォルトではフォントが汚く、メニューの文字がガタガタしているかもしれません。

フォントを改善するにはWindows10のフォントをWSLから参照できるようにします。

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

この処理をしてからxrdpを再起動してやり直してみましょう。

$ sudo service xrdp restart

もう一度リモートデスクトップで接続し直すとWindowsのフォントが使えるようになっているので、MATEのメニューから「システム」→「設定」→「ルック&フィール」→「外観の設定」でフォントを選びます。

MATEの設定

私はフリーのMiguフォントを使ってみました。

これでかなり見やすくなります。

MATEのフォントの設定

あとは普通にアプリを起動するだけです。Firefox等も当然使えます。

MATEのデスクトップ画面

なおリモートデスクトップを終了するときは

  • WSLのデスクトップも終了したい場合→「システム」→「ログアウト」でログアウトする
  • WSLのデスクトップを維持したままリモートデスクトップを閉じたい→リモートデスクトップの閉じるボタンを選択

となります。後者の場合はリモートデスクトップで再接続すれば切断したときの状態で再開できます。

リモートデスクトップの設定を保存する

動作確認がOKでリモートデスクトップのサイズなどが決まったら設定を保存しておきましょう。

リモートデスクトップの接続を起動して「オプションの表示」を選択したあと「全般」タブを選び、接続設定の「名前をつけて保存」を選択しましょう。

リモートデスクトップの接続設定を保存

私は「wsl.rdp」として保存しました。

今後はこのアイコンをダブルクリックするだけでリモートデスクトップに接続することができます。

リモートデスクトップのアイコン

まとめ

今回はWindows Subsystem for Linuxを使って導入したDebianにリモートデスクトップで接続できるようにしてみました。

リモートデスクトップを使うとWindows側に特別なソフトを入れる必要がありません。Linuxのデスクトップ画面を使いたい方は、Xサーバー(VnXsrv)を使うよりリモートデスクトップの方がお手軽だと思います。