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

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

はじめに

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

Using full desktop shell in WSL2 using WSLg (Wayland) · GitHub

下の画像のように、GNOMEデスクトップを Windowsの1つのウィンドウとして表示できます。
ここでは、日本語設定も含めて、設定方法を説明します。

なお、次の制限があります。

・フルスクリーンに出来ません
・カーソルはGNOMEデスクトップ上では、Windowsカーソル位置に小さいカーソルと、GNOMEデスクトップのカーソルが表示されます。Windowsカーソル位置のカーソルの方が少し速く動くので、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

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

以下の作業をおこないます。
基本的に Using full desktop shell in WSL2 using WSLg (Wayland) · 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 mask 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 mkdir /etc/systemd/user/org.gnome.Shell@wayland.service.d/
sudo nano /etc/systemd/user/org.gnome.Shell@wayland.service.d/override.conf

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

[Service]
ExecStart=
ExecStart=/usr/bin/gnome-shell --nested

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

[boot]
systemd=true

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

wsl.exe --shutdown

Ubuntu 24.04 を起動し、続けて以降の「日本語入力の設定」の作業を実施してください。
日本語入力不要の場合は、「GNOMEデスクトップ起動用スクリプトの設定・実行」の作業を実施してください。

日本語入力の設定

fcitx5のインストール・設定

次を実行します。

sudo apt install language-pack-ja fcitx5-mozc

次を実行します。

sudo localectl set-locale ja_JP.UTF-8

一旦ターミナルを閉じ、再度 Ubuntu24.04 を起動します。

次を実行します。

fcitx5-configtool

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

次のようになります。

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

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

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

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

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

~/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 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 の設定は完了です。

GNOMEデスクトップ起動用スクリプトの設定・実行

~/exec_Xsession.sh を次の内容で作成します。
MUTTER_DEBUG_DUMMY_MODE_SPECS で起動するGNOMEデスクトップの画面の大きさを指定しています。
画面の大きさを変える場合は、ここを変更してください。

xset -r 49
export DESKTOP_SESSION=ubuntu
export GDMSESSION=ubuntu
export GNOME_SHELL_SESSION_MODE=ubuntu
export GTK_MODULES=gail:atk-bridge
export IM_CONFIG_CHECK_ENV=1
export IM_CONFIG_PHASE=1
export QT_ACCESSIBILITY=1
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/ubuntu:$XDG_DATA_DIRS
export XDG_SESSION_TYPE=wayland
export MUTTER_DEBUG_DUMMY_MODE_SPECS=1200x800
/etc/X11/Xsession &
PID=$!
while ! pgrep -x "gnome-shell" >/dev/null; do
    sleep 1
done
while pgrep -x "gnome-shell" >/dev/null; do
    sleep 1
done
kill $PID

設定したら、exec_Xsession.sh を実行してください。

sh exec_Xsession.sh

次のように GNOMEデスクトップが、Windowsのウィンドウとして立ち上がります。
初回起動時は画面の[Next][Skip]などを押して行ってください。

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

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

追加の設定

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

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+スペース でも日本語/半角入力が切り替えられます。また、日本語/半角入力が替わり続ける状態が止まります。

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

それでも発生する場合は、Ubuntu24.04 を一旦停止後に、Ubuntu24.04を起動してからGNOMEデスクトップを起動してみてください。

Ubuntuの停止は、次のコマンドで実行します。

wsl.exe -t Ubuntu-24.04

ただし、Ubuntuを停止させると、次回の Ubuntu起動は数秒余分にかかるようになります。

上記コマンドを sh exec_Xsession.sh の最後の行に追加すると、GNOMEデスクトップを閉じた後に、Ubuntu24.04 も停止します。

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

Chromiumブラウザ

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

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

参考

Using full desktop shell in WSL2 using WSLg (Wayland) · 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

コメント