WSLgでUbuntu24.04のGNOMEデスクトップを動かす(GDM)

ALL
スポンサーリンク
スポンサーリンク

はじめに

下記のサイトで、Windows WSL2上で GDM,GNOMEデスクトップを動かす方法が説明されていました。

A tutorial to use GUI in WSL2/WSLg replacing original Xorg by Xwayland, allowing WSL to work like native Linux, including login screen · GitHub

下の画像のように、GDMログイン画面とGNOMEデスクトップを フルスクリーンで表示します。
ここでは、日本語設定も含めて、設定方法を説明します。

事前確認

WSLgが使用可能かの確認

コマンドプロンプトで次を実行します。

wsl -v

次のように WSLg バージョン: の表示があればOKです。

WSL バージョン: 2.3.26.0
カーネル バージョン: 5.15.167.4-1
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5620
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.19045.5131

上記のような表示が出なかった場合は、管理者として実行したコマンドプロンプトで次を実行してください。

wsl --update

再度、wsl -v を実行して表示結果を確認してください。

Ubuntu24.04 が WSL2バージョンかの確認

コマンドプロンプトで次を実行します。

wsl -l -v

出力結果で、VERSION列が2になっていることを確認してください。

  NAME            STATE           VERSION
* Ubuntu-24.04    Running         2

なっていない場合は、管理者として実行したコマンドプロンプトで、次を実行し、再度 wsl -l -v の結果を確認してください。

wsl --set-version Ubuntu-24.04 2

GDM,GNOMEデスクトップのインストール

以下の作業をおこないます。
基本的に A tutorial to use GUI in WSL2/WSLg replacing original Xorg by Xwayland, allowing WSL to work like native Linux, including login screen · GitHub の内容に従った作業ですが、一部変更しています。

Ubuntu 24.04を起動します。以下、Ubuntu 24.04のターミナルでの作業です。

更新をかけておきます。

sudo apt update
sudo apt upgrade

/etc/apt/preferences.d/noinstall を次の内容で作成します。
以降の作業で ubuntu-desktopパッケージをインストールしますが、その際に acpi-support がインストールされないようにします。
acpi-support がインストールされると、apt update や systemctl status 実行で時間がかかったりするためです。

Package: acpi-support
Pin: release *
Pin-Priority: -1

次を実行します。

sudo apt install ubuntu-desktop

次を実行します。

sudo systemctl disable gdm.service

次を実行します。

sudo systemctl edit --full --force wslg-fix.service

実行すると、エディタ画面になるので、下記を入力します。
入力したら CTRL-X を押します。変更内容を保存するか聞かれるので、y を押した後に Enter を押すと保存されます。

[Service]
Type=oneshot
ExecStart=-/usr/bin/umount /tmp/.X11-unix
ExecStart=/usr/bin/rm -rf /tmp/.X11-unix
ExecStart=/usr/bin/mkdir /tmp/.X11-unix
ExecStart=/usr/bin/chmod 1777 /tmp/.X11-unix
ExecStart=/usr/bin/ln -s /mnt/wslg/.X11-unix/X0 /tmp/.X11-unix/X0
ExecStart=/usr/bin/chmod 0777 /mnt/wslg/runtime-dir
ExecStart=/usr/bin/chmod 0666 /mnt/wslg/runtime-dir/wayland-0.lock

[Install]
WantedBy=multi-user.target

次を実行します。

sudo systemctl enable wslg-fix.service

次を実行します。

sudo systemctl set-default multi-user.target

次を実行します。

sudo dpkg-divert --local --add --rename /usr/bin/Xorg

次を実行します。

sudo nano /usr/bin/Xorg.Xwayland

実行すると、エディタ画面になるので、下記を入力します。
入力したら CTRL-X を押します。変更内容を保存するか聞かれるので、y を押した後に Enter を押すと保存されます。

#!/bin/bash
for arg do
  shift
  case $arg in
    # Xwayland doesn't support vtxx argument. So we convert to ttyxx instead
    vt*)
      set -- "$@" "${arg//vt/tty}"
      ;;
    # -keeptty is not supported at all by Xwayland
    -keeptty)
      ;;
    # -novtswitch is not supported at all by Xwayland
    -novtswitch)
      ;;
    # other arguments are kept intact
    *)
      set -- "$@" "$arg"
      ;;
  esac
done

# Check if the runtime dir is present, and create it if not
if [ ! -d $HOME/runtime-dir ]
then
 mkdir $HOME/runtime-dir
 ln -s /mnt/wslg/runtime-dir/wayland-0 /mnt/wslg/runtime-dir/wayland-0.lock $HOME/runtime-dir/
fi

# Point the XDG_RUNTIME_DIR variable to $HOME/runtime-dir
export XDG_RUNTIME_DIR=$HOME/runtime-dir

# Find an available display number
for displayNumber in $(seq 1 100)
do
  [ ! -e /tmp/.X11-unix/X$displayNumber ] && break
done

# Here you can change or add options to fit your needs
command=("/usr/bin/Xwayland" ":${displayNumber}" "-geometry" "1920x1080" "-fullscreen" "$@")

systemd-cat -t /usr/bin/Xorg echo "Starting Xwayland:" "${command[@]}"

exec "${command[@]}"

次を実行します。

sudo chmod 0755 /usr/bin/Xorg.Xwayland
sudo ln -sf Xorg.Xwayland /usr/bin/Xorg

次を実行します。

mkdir ~/.config
nano ~/.config/monitors.xml

実行すると、エディタ画面になるので、下記を入力します。
入力したら CTRL-X を押します。変更内容を保存するか聞かれるので、y を押した後に Enter を押すと保存されます。

<monitors version="2">
  <configuration>
    <logicalmonitor>
      <x>0</x>
      <y>0</y>
      <scale>1</scale>
      <primary>yes</primary>
      <monitor>
        <monitorspec>
          <connector>XWAYLAND0</connector>
          <vendor>unknown</vendor>
          <product>unknown</product>
          <serial>unknown</serial>
        </monitorspec>
        <mode>
          <width>1920</width>
          <height>1080</height>
          <rate>59.963</rate>
        </mode>
      </monitor>
    </logicalmonitor>
  </configuration>
</monitors>

次を実行します。

sudo mkdir /var/lib/gdm3/.config
sudo cp ~/.config/monitors.xml /var/lib/gdm3/.config/
sudo chown -R gdm:gdm /var/lib/gdm3/.config/
sudo mkdir /root/.config
sudo cp /opt/wslenv/monitors.xml /root/.config/

~/.xsessionrc を次の内容で作成します。

export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
export WAYLAND_DISPLAY=
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg

/etc/wsl.conf で [boot]セクションに systemd=true があるか確認してください。無い場合は wsl.conf を下記のように作成してください。

[boot]
systemd=true

次を実行します。
WSL2がシャットダウンされ、ターミナルが閉じられます。

wsl.exe --shutdown

GDM,GNOMEデスクトップ起動

Ubuntu24.04 のターミナルから、次を実行します。

sudo systemctl start gdm

次のように フルスクリーンで、GDMのログイン画面となります。


ログイン後、GNOMEデスクトップが表示されます。
初回起動時は画面の[Next][Skip]などを押して行ってください。

これでGNOMEデスクトップの起動完了です。

終了は、画面右上の電源ボタンを押し出てきたダイアログでさらに電源ボタンを押します。
次の画面で Power Off または Log Out を選択すると、GNOMEデスクトップ画面が終了します。
Power Off を選んだ場合は、Ubuntu24.04 のターミナルも終了します。

日本語入力の設定

日本語入力を行う場合の設定です。
GNOMEデスクトップを起動し、ターミナルを開いてから以降の作業を行ってください。

fcitx5のインストール・設定

次を実行します。

sudo apt install language-pack-ja fcitx5-mozc

次を実行します。

sudo localectl set-locale ja_JP.UTF-8

GNOMEデスクトップを Power Off で終了し、再度 Ubuntu24.04 を起動し、続けてGNOMEデスクトップを起動します。

ターミナルを開いて次を実行します。

fcitx5-configtool

次の画面が出るので、[Fcitx5 を実行する]を押します。

次のようになります。

[キーボード – 英語(US)] を選択し、画面中央の → を押します。左側のペインから右側に移ります。
右側の [キーボード – 日本語] を選択し、画面中央の ← を押します。右側のペインから左側に移ります。
左側に移った [キーボード – 日本語] を選択し、画面中央の ↑ を押します。

左側ペインが次のようになったら、[OK]を押します。

次の画面が出たら、[Yes] を押します。

~/fcitx5.sh を次の内容で作成します。

#!/bin/sh
fcitx5 -d
sleep 1
xset -r 49

実行権を付けます。

chmod +x ~/fcitx5.sh

次を実行します。

gnome-session-properties

次の画面が出るので、[Add] を押します。

次の画面の Command の箇所で、[Browse…]ボタンを押し、先ほど作成した fcitx5.sh を指定します。
なお、直接入力する場合は、~/fcitx5.sh とせずに /home/user/fcitx5.sh のようにフルパスで指定してください。
Name , Comment の箇所は任意の内容を入力し、[Add]ボタンを押します。

元の画面に戻るので、[Close]を押します。

GNOMEデスクトップを Power Off で終了し、再度 Ubuntu24.04 を起動し、続けてGNOMEデスクトップを起動します。

これで、ターミナルや各アプリで、半角/全角キーを押すと日本語入力できます。

GNOME Shell拡張機能「Input Method Panel」の設定

GNOME Shell拡張機能「Input Method Panel」の設定を行います。
これをしないと、日本語入力で変換候補ポップアップの位置が、適切では無い箇所に表示されることがあります。
たとえば、Firefox や Thunderbird でポップアップが、文字入力箇所の上に重なって表示されたり、GNOMEデスクトップ上の特定位置にしか出なかったりします。

Input Method Panel の設定手順です。
次を実行します。

sudo apt install gnome-shell-extensions gnome-tweaks chrome-gnome-shell

Firefox で https://extensions.gnome.org/extension/261/kimpanel/ にアクセスし、表示されたページで [Install] を押します。

次の画面が出た場合は、[リンクを開く]を押します。

次の画面で [Install] を押します。
押しても特にメッセージが出たりはしませんが、これで Input Method Panel がインストールされます。

次を実行します。

gnome-shell-extension-prefs

次の画面が立ち上がります。

[Extensions] の箇所が ON になっていなかったら、ON にします。
[Input Method panel] の箇所が ON になっていなかったら、ON にします。

これで、Input Method Panel の設定は完了です。

追加の設定

Windowsとのクリップボード連携(テキストのコピー・ペースト)

GNOMEデスクトップ画面が全画面になるので、Windowsアプリとの連携は使い勝手が悪いですが、テキストのコピー・ペーストでクリップボード連携する方法です。

下記の Clipboard Sync のインストールが必要です。

GitHub – dnut/clipboard-sync: Synchronizes the clipboard across multiple X11 and wayland instances running on the same machine.

次の手順でインストール・設定します。

次を実行します。

sudo wget -P /etc/apt/sources.list.d/ https://raw.githubusercontent.com/dnut/deb/master/dnut.list
sudo apt update && sudo apt install clipboard-sync

次を実行します。

gnome-session-properties

次の画面が出るので、[Add] を押します。

次の画面が出ます。

Command: の箇所に 次の内容を入れます。
Name , Comment の箇所は任意の内容を入力し、[Add]ボタンを押します。

systemctl --user enable --now clipboard-sync

元の画面に戻るので、[Close]を押します。

これで、次回GNOME起動から、Windowsとの間でテキストのコピー・ペーストができます。

不具合への対処

半角/全角キーを押すと、日本語/半角入力が切り替わり続ける場合

半角/全角キーを押すと、キーを押しっぱなしにしているように、日本語/半角入力が切り替わり続ける状態になる場合です。

CTRL+スペース でも日本語/半角入力が切り替えられます。また、日本語/半角入力が替わり続ける状態が止まります。

Ubuntu起動後すぐ(数秒以内)に sudo systemctl start gdm を実行すると、現象が発生するようです。
起動後は5秒してから sudo systemctl start gdm を実行してください。

それでも発生する場合は、先の手順「日本語入力の設定」で作成した fcitx5.sh 内の sleep 1 の値を sleep 5 にして、GNOMEデスクトップを起動しなおしてみてください。

これでも発生する場合は、日本語入力時に半角/全角キーの代わりに CTRL+スペース で日本語入力するようにするしかありません。
誤って半角/全角キーを押してしまって、日本語/半角入力が切り替わり続けている状態でも、CTRL+スペースを押すと切り替えがおさまります。

Chromiumブラウザ

「半角/全角キーを押すと、日本語/半角入力が切り替わり続ける場合」の対処後でも、Chromiumブラウザで現象が発生する場合は、下記のスクリプトで Chromiumブラウザを起動するようにしてみてください。

#!/bin/sh
xset -r 49
chromium-browser 2> /dev/null

参考

A tutorial to use GUI in WSL2/WSLg replacing original Xorg by Xwayland, allowing WSL to work like native Linux, including login screen · GitHub
Windows Subsystem for Linuxガイド 第24回 WSLgの日本語入力を設定する | マイナビニュース
GUIでの日本語入力環境の整備(Ubuntu 24.04)
GitHub – dnut/clipboard-sync: Synchronizes the clipboard across multiple X11 and wayland instances running on the same machine.
【備忘録】Ubuntu 24.04 で日本語入力環境を整える(変換候補のポップアップ位置修正) #Linux – Qiita

コメント