前回はWindows向けのXサーバーソフトであるVcXsrvを利用してWSL2のUbuntuのGUIを表示する方法を紹介しました。
今回は別の方法としてリモートデスクトップを使った方法を紹介します。
かつてWSL1でインストールしたDebianで同様のことを行った記事は下記になります。
リモートデスクトップ
Windowsには他のPCの画面を表示するリモートデスクトップという機能があります。
この機能をつかってWSL2に接続し、Linuxのデスクトップ画面を表示させようというわけです。
前回紹介したVcXsrvを使う方法では、WSL2で起動した各アプリのウィンドウを個別に表示させる場合は便利なのですが、WSL2のデスクトップ画面を表示させる場合は次のような不満点がありました。
- キーボードが勝手に英語に切り替わってしまう
- 毎回WSL2のIPアドレスを調べてVcXsrvの設定を変える必要がある
これらの課題が解決できることを期待しつつ、リモートデスクトップを試してみたいと思います。
WSL2側の設定
まずWSL2側で作業をしていきます。
xrdpのインストール
WSL2でxrdpの接続を受け付けるにはxrdpというパッケージを導入する必要があります。
$ sudo apt-get install xrdp
デスクトップ環境を入れていない方はデスクトップ環境も入れておきましょう。私はVcXsrvを試したときにLXDEを入れていました。
$ sudo apt-get install lxde
インストールが終わったらxrdp設定ファイルを修正します。
xrdpの設定ファイル/etc/xrdp/xrdp.iniにあるので、このファイルを編集して「port」で始まる行を
port=3390
に変更しておきます。
これは下記のコマンドで実現できます。
$ sudo sed -i -e 's/^port=3389/port=3390/g' /etc/xrdp/xrdp.ini
ここまで完了したらxrdpを起動しておきます。
$ sudo service xrdp restart
WSL2のIPアドレスの確認
リモートデスクトップをの接続時にWSL2のIPアドレスが必要になるので下記のコマンドで確認しておいます。
$ hostname -I
172.29.56.64
このIPアドレスは後ほど利用するのでどこかにメモっておきます。
LXDEの起動設定
リモートデスクトップの接続時にLXDEが起動するように、ホームディレクトリに.xsessionrcというファイルを作成します。
$ echo "export LANG=ja_JP.UTF-8" > ~/.xsessionrc $ echo "startlxde" >> ~/.xsessionrc
Windows側の設定
ここからはWindows側で作業をしていきます。
リモートデスクトップの接続
WSL2側の準備ができたのでそれではリモートデスクトップで接続してみます。
Windowsのスタートメニューから「リモートデスクトップ接続」を探して実行します。
次のようなウィンドウが出るので「オプションの表示」を選択しましょう。
これでリモートデスクトップのオプションが設定できるので「画面」タブを選択します。
「画面の設定」のエリアでリモートデスクトップの画面サイズ(=WSLのデスクトップ画面のサイズ)を設定できます。
Windows画面全体をリモートデスクトップで覆われたくないときはここで画面サイズより小さい解像度を設定しておきます。
設定が終わったら「オプションの非表示」を選択してオプションの設定画面をクローズします。
次のようなウィンドウがでるので「WSL2のIPアドレス:3390」と入力して「接続」を選択します。
すると次のような警告が出るので、チェックボックスを選択してから「はい」を選択します。
これでリモートデスクトップのログイン画面が表示されるはずです。
「Session」で「Xorg」になっていることを確認して、WSL2のユーザ名とパスワードでログインします。
これでLXDEのデスクトップが表示されればOKです。
デフォルトではフォントが汚く、メニューの文字がガタガタしているかもしれません。
フォントを改善するにはWindows10のフォントをWSLから参照できるようにします。
$ sudo ln -s /mnt/c/Windows/Fonts/ /usr/share/fonts/windows $ sudo fc-cache -fv
この処理をしてからxrdpを再起動してやり直してみましょう。
$ sudo service xrdp restart
もう一度リモートデスクトップで接続し直すとWindowsのフォントが使えるようになっているので、LXDEのメニューから「設定」→「ルックアンドフィールを設定します」でデフォルトのフォントを選びます。
私はフリーのMiguフォントを使ってみました。
これでかなり見やすくなります。
あとは普通にアプリを起動するだけです。Firefox等も当然使えます。
なおリモートデスクトップを終了するときは
- WSLのデスクトップも終了したい場合→「システム」→「ログアウト」でログアウトする
- WSLのデスクトップを維持したままリモートデスクトップを閉じたい→リモートデスクトップの閉じるボタンを選択
となります。後者の場合はリモートデスクトップで再接続すれば切断したときの状態で再開できます。
IPアドレス問題
ここまでの設定でリモートデスクトップを使ってWSL2のUbuntuに接続できるようになったわけですが、1つ問題が残っています。
それはリモートデスクトップの接続時に指定するWSL2のIPアドレスです。
ここには事前に調べたWSL2のIPアドレスを指定する必要がありました。
WSL2のIPアドレスは起動毎に変わるのでこれでは不便です。そこれで代わりに「localhost:3390」を指定してみましょう。
「接続」を選択して、「このリモートコンピュータのIDを識別できません。接続しますか?」の問い合わせが再び表示されたら、「このコンピュータへの接続について今後は確認しない」をチェックした後「はい」を選択しましょう。
これでWSL2のIPアドレスを指定したときと同様にWSL2に接続できればOKです。
最近のWSL2ではデフォルトでlocalhost経由でのアクセスが有効になっています。
リモートデスクトップの設定を保存
動作確認がOKでリモートデスクトップのサイズなどが決まったら設定を保存しておきましょう。
リモートデスクトップの接続を起動して「オプションの表示」を選択したあと「全般」タブを選び、接続設定の「名前をつけて保存」を選択しましょう。
私は「wsl2.rdp」として保存しました。
今後はこのアイコンをダブルクリックするだけでリモートデスクトップに接続することができます。
まとめ
今回はWindows Subsystem for Linux(WSL2)を使って導入したUbuntuにリモートデスクトップで接続できるようにしてみました。
リモートデスクトップを使うとWindows側に特別なソフトを入れる必要がありません。WSL2でデスクトップ画面を使いたい方は、Xサーバー(VnXsrv)を使うよりリモートデスクトップの方がお手軽だと思います。
次回はWSL2で使えるWSLgという機能を使ってみたいと思います。
コメント