前回はWSL2で利用できるWSLgという機能を使ってUbuntu 24.04 LTSのGUIアプリをWindows上に表示する方法を紹介しました。
今回は別の方法としてリモートデスクトップを使った方法を紹介します。
リモートデスクトップ
Windowsには他のPCの画面を表示するリモートデスクトップという機能があります。
この機能をつかってWSL2に接続し、Linuxのデスクトップ画面を表示させようというわけです。
前回紹介したWSL2を使う方法では、Ubuntuの各アプリのウィンドウを個別に表示させる場合は便利なのですが、Ubuntuのデスクトップ全体の画面を表示させることはできませんでした。
そこで今回はリモートデスクトップを試してみたいと思います。
WSL2側の設定
まずWSL2側で作業をします。
xrdpのインストール
WSL2でリモートデスクトップの接続を受け付けるにはxrdpというパッケージを導入する必要があります。
sudo apt-get install xrdp
インストールが終わったら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 systemctl restart xrdp
デスクトップ環境のインストール
Ubuntuではさまざまなデスクトップ環境が利用できます。ここでは代表的なものの利用方法を紹介しておきます。
個人的には軽快で操作感がWindowsと違和感が少ない「LXDE」か「MATE」がオススメです。
見た目かつWindowsとの操作感の統一を考えると「Cinnamon」もよいのですが、やや重いのでWSL2を常時立ち上げておく人向けかと思います。
Ubuntu Desktop
Ubuntuの公式デスクトップ環境です。ChatGPTによると「シンプルで直感的」とのことです。
インストールには次のコマンドを実行します。
sudo apt install ubuntu-desktop
多数のパッケージがインストールされるので時間がかかります。気長に待ちましょう。
ubuntu-desktopパッケージのインストール後にWSLのIPアドレスが消えてしまうという現象に遭遇しました。
私の場合はPowerShellから
PS C:> wsl --shutdown
として、いったんWSL2を終了してから、再度起動するとネットワークインターフェイスが復活しました。
次にリモートデスクトップの接続時にUbuntu Desktopが起動するように、ホームディレクトリに次の内容の「.xsessionrc」というファイルを作成します。
#!/bin/bash
export XDG_SESSION_DESKTOP=gnome
export XDG_CURRENT_DESKTOP=GNOME
exec gnome-session
LXDE
ChatGPTによると「非常に軽量でシンプルなデスクトップ環境」とのことです。
LXDEをインストールするには下記のコマンドを実行します。
sudo apt-get install lxde
多数のパッケージがインストールされるので時間がかかります。気長に待ちましょう。
次にリモートデスクトップの接続時にLXDEが起動するように、ホームディレクトリに次の内容の「.xsessionrc」というファイルを作成します。
#!/bin/bash
export LANG=ja_JP.UTF-8
export XDG_SESSION_DESKTOP=lxde
export XDG_CURRENT_DESKTOP=lxde
exec startlxde
ファイルを作成したら実行属性を付けておきます。
chmod +x .xsessionrc
MATE
ChatGPTによると「GNOME 2に似たクラシックなデザインで、軽量かつ安定」とされています。
MATEをインストールするには下記のコマンドを実行します。
sudo apt install mate-desktop-environment
多数のパッケージがインストールされるので時間がかかります。気長に待ちましょう。
次にリモートデスクトップの接続時にMATEが起動するように、ホームディレクトリに次の内容の「.xsessionrc」というファイルを作成します。
#!/bin/bash
export LANG=ja_JP.UTF-8
export XDG_SESSION_DESKTOP=mate
export XDG_CURRENT_DESKTOP=mate
exec mate-session
ファイルを作成したら実行属性を付けておきます。
chmod +x .xsessionrc
LXQt
ChatGPTによると「非常に軽量で、古いPCやリソースが限られた環境に適している」とされています。
インストールは下記のコマンドで行えます。
sudo apt install lxqt
しかしなぜかインストール後にWSLのIPアドレスが消えてしまうという現象に遭遇しました。
LXQtといっしょにインストールされる何らかのパッケージが原因なのだと思いますが、突き止めることはできませんでした。
WSL2でLXQtを使うのはあまりオススメできません。
XFCE
ChatGPTによると「軽量でリソース消費が少ない。古いハードウェアにも最適」とのことです。
インストールは次のコマンドで行えます。
sudo apt install xubuntu-desktop
多数のパッケージがインストールされるので時間がかかります。気長に待ちましょう。
次にリモートデスクトップの接続時にXFCEが起動するように、ホームディレクトリに次の内容の「.xsessionrc」というファイルを作成します。
#!/bin/bash
export LANG=ja_JP.UTF-8
export XDG_SESSION_DESKTOP=xfce
export XDG_CURRENT_DESKTOP=xfce
exec startxfce4
ファイルを作成したら実行属性を付けておきます。
chmod +x .xsessionrc
Cinnamon
ChatGPTによると「Linux Mintから派生したデスクトップ環境。モダンで使いやすい。」とのことです。
インストールは次のコマンドで行えます。
sudo apt install cinnamon
多数のパッケージがインストールされるので時間がかかります。気長に待ちましょう。
次にリモートデスクトップの接続時にCinnamonが起動するように、ホームディレクトリに次の内容の「.xsessionrc」というファイルを作成します。
#!/bin/bash
export LANG=ja_JP.UTF-8
export XDG_SESSION_DESKTOP=cinnamon
export XDG_CURRENT_DESKTOP=Cinnamon
exec cinnamon-session
WSL2のIPアドレスの確認
リモートデスクトップの接続時にWSL2のIPアドレスが必要になるので下記のコマンドで確認しておきます。
$ hostname -I
172.21.92.66
このIPアドレスは後ほど利用するのでどこかにメモっておきます。
Windows側の設定
ここからはWindows側で作業をします。
リモートデスクトップの接続
WSL2側の準備ができたのでそれではリモートデスクトップで接続してみます
Windowsのスタートメニューから「リモートデスクトップ接続」を探して実行します。
次のようなウィンドウが出るので「オプションの表示」を選択しましょう。
これでリモートデスクトップのオプションが設定できるので「画面」タブを選択します。
「画面の設定」のエリアでリモートデスクトップの画面サイズ(=WSLのデスクトップ画面のサイズ)を設定できます。
Windows画面全体をリモートデスクトップで覆われたくないときはここで画面サイズより小さい解像度を設定しておきます。
設定が終わったら「オプションの非表示」を選択してオプションの設定画面をクローズします。
次のようなウィンドウがでるので「WSL2のIPアドレス:3390」と入力して「接続」を選択します。
すると接続の安全性に関する次の警告が出るので、チェックボックスを選択してから「はい」を選択します。
これでリモートデスクトップのログイン画面が表示されるはずです。
「Session」で「Xorg」になっていることを確認して、WSL2のユーザ名とパスワードでログインします。
これで選択したデスクトップ環境の画面が表示されればOKです。
下記はMATEをデスクトップ環境のとしてインストールしたときの画面です。
デフォルトで使われているフォントが好みでない場合は、Windows側のフォントを使えるようにしましょう。
MATEの画面で左上のメニューからセッションの終了をするアイコンを選択したあとにログアウトして、いったんリモートデスクトップ接続を終了します。
次に下記のコマンドを実行します。
sudo ln -s /mnt/c/Windows/Fonts/ /usr/share/fonts/windows
sudo ln -s $(wslpath `cmd.exe /c echo %USERPROFILE% 2> /dev/null`| tr -d '\r')/AppData/Local/Microsoft/Windows/Fonts/ /usr/share/fonts/windows-users
sudo fc-cache -fv
2行目のコマンドはWindows側のユーザディレクトリにあるフォントのディレクトリを取得しています。
Windows11の設定のフォントで新しいフォントをインストールすると、デフォルトではユーザディレクトリ以下にフォントファイルが配置されるようです。
この処理をしてからxrdpを再起動します。
sudo systemctl restart xrdp
ここでもう一度リモートデスクトップで接続し直すとWindowsのフォントが使えるようになっているので、デスクトップ環境のメニューからフォントを変更しましょう。
たとえば、MATEの場合は、メニューから「コントロール・センター」→「外観の設定」でフォントを変更できます。
私はWindowsに最初から入っている「BIZ UDゴシックRegular」とフリーの「UDEV Gothic JPDOC Regular」を組み合わせてみました。
これでかなり見やすくなります。
あとは普通にアプリを起動するだけです。MATEをインストールしただけではあまりアプリはインストールされないので、必要なアプリを入れておきましょう。
たとえば、Firefoxを導入するなら次のようになります。
sudo apt-get install firefox
Firefoxはsnapパッケージになっているようです。このせいかインストールに時間がかかります。
インストールが完了するとMATEのメニューに「Firefox」が増えますので、選択すればOKです。
なおリモートデスクトップを終了するときは
- WSLのデスクトップも終了したい場合→「MATEのメニューのセッションの終了アイコン」→「ログアウト」でログアウトする
- WSLのデスクトップを維持したままリモートデスクトップを閉じたい→リモートデスクトップの閉じるボタンを選択
となります。後者の場合はリモートデスクトップで再接続すれば切断したときの状態で再開できます。
IPアドレス指定方法
上記ではリモートデスクトップの接続先アドレスとして、WSL2側のアドレス(hostname -I
の出力結果)を使いました。
しかし、実はWSL2のデフォルトの設定では「localhost」を使って接続することも可能です。
IPアドレスだと覚えるのが面倒なので、localhostを使うのもありだと思います。
以前のWSL2ではIPアドレスが起動前に変わるため、localhostによる接続先指定が便利でした。
しかし、最近のWSL2ではIPアドレスは基本的に変わらないようなので、localhostを使うメリットは覚えやすいことぐらいかもしれません。
リモートデスクトップの設定を保存
動作確認がOKでリモートデスクトップのサイズなどが決まったら設定を保存しておきましょう。
リモートデスクトップの接続を起動して「オプションの表示」を選択したあと「全般」タブを選び、接続設定の「名前を付けて保存」を選択しましょう。
私は「wsl2.rdp」として保存しました。
今後はこのアイコンをダブルクリックするだけでリモートデスクトップに接続できます。
まとめ
今回はWindows Subsystem for Linux(WSL2)を使って導入したUbuntuにリモートデスクトップで接続できるようにしてみました。
リモートデスクトップを使えば、Windows側に特別なソフトをインストールする必要はありません。WSL2でデスクトップ画面を使いたい方は、この方法が手軽だと思います。
次回はWindows側にXサーバをインストールしてLinuxのGUIアプリを使えるようにしてみます。
コメント