前置き
本記事では、windowsに導入したWSL2をGUI化する方法について紹介しています。
WSL2を導入する方法については以下の記事を参照ください
【WSL2】WindowsにLinuxを入れてWindows Terminalで使うと便利すぎた件
XRDPサーバー(RDPプロトコルを使用してGUI操作をユーザに提供してくれるオープンソースのRDPサーバ)を使用して、GUI化できる。(現状はコマンドラインからの操作のみ)
※WSLのインストールや初期設定は完了している前提で進めます。
ubuntuにXRDPをインストール
WSL2で以下のコマンドを実行
sudo apt update && sudo apt -y upgrade
sudo apt -y install xfce4
sudo apt-get install xrdp
- パッケージのリポジトリから、パッケージの名前やバージョン、依存関係を取得し、有効でインストール可能なパッケージの一覧を更新
- 有効なパッケージ一覧を元に、アップデート可能なパッケージを更新
- xfce4(ウィンドウマネージャ、ファイルマネージャなどのソフトウェアをまとめたデスクトップ環境の1つ)をインストール
- xrdp(Windowsのリモートデスクトップ接続に用いられるRDP(Remote Desktop Protocol)のサーバ機能をLinux向けに提供するサーバソフトウェア)をインストール
ディスプレイマネージャーの選択
Ubuntuのディスプレイマネージャー(LinuxのGUI環境)はgdm3を選択する

xrdp.iniを編集
- xrdp.iniのバックアップをとる
- port番号を3389から3390に置換
- もろもろの画面のcolor設定
- セッション用のファイルを生成。xfce4-session はXfce 4用のセッションマネージャ。デスクトップの状況(開かれているアプリケーション、それらの場所)を保存してくれたりする
sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini
echo xfce4-session > ~/.xsession
startwm.shを編集
sudo vim /etc/xrdp/startwm.sh
- 最後の2行をコメントアウト
- 末尾にstartxfce4を追記
# コメントアウト
# test -x /etc/X11/Xsession && exec /etc/X11/Xsession
# コメントアウト
# exec /bin/sh /etc/X11/Xsession
# 追加 startxfce4
RDPでWindowsから接続
ubuntuでXRDPを起動
sudo /etc/init.d/xrdp start
Powershellでwslを再起動
wsl --shutdown
RDPでlocalhost:3390に接続

ログイン情報を入力してOK

接続完了

まとめ
いかがでしたでしょうか。本記事では、windowsに導入したWSL2をGUI化する方法について紹介しています。XRDPサーバー(RDPプロトコルを使用してGUI操作をユーザに提供してくれるオープンソースのRDPサーバ)を使用して、GUI化できる。(現状はコマンドラインからの操作のみ)