Windows11 WSL2 & WSLg Ubuntu の初期設定
当日記ではアフィリエイト広告を利用しています
Windows11 では WSLg が install 直後から使えるようになっています。特に設定しなくても WSL2 の command line で GUI application を実行すれば、Windows11 側で window が開いて表示されます。しかしながら、初期状態では日本語の表示と入力が出来ず、また Windows11 では 150% scaling されているのに対して、WSLg Ubuntu の表示は等倍で非常に小さく表示されてしまいます。これらの事を含めた WSL2 & WSLg の初期設定についてまとめて記載します。
日本語環境を整える
実機や仮想マシンに Ubuntu 等の Linux Distribution を install する際には、一番初めに「言語の選択」があり、日本語を選択する事が出来ます。それ以降の installer の表示は日本語で進める事ができ、install が終了して再起動した際にも日本語がちゃんと表示できる状態になります。昔の Linux では日本語環境を整えるだけでも一苦労でしたが、現在は installer の段階から日本語が表示できるというのは、これまで Linux に関わってきた方々の取組の結果であり感謝します。
Windows Terminal を使用すると、WSL2 の環境でも日本語が正常に表示できます。Windows Terminal で起動している Ubuntu の terminal に Windows11 の IME から入力して日本語名のフォルダを作成したり cd で移動したりする事も可能です。
しかし、install した後の素の状態では、Error Message や Man page が英語表示であり、GUI application の menu も英語です。日本語入力も出来ません。Windows 側の日本語入力は (今のところは) 使用することが出来ません。
まずは、WSLg の環境で
- locale を ja_JP.utf8 にして日本語環境にする
- 日本語のフォントを使用できるようにする
- 日本語入力を GUI application で使えるようにする
という3点について使えるようにしてみました。
以下の page を参考にしました。
zenn.dev
astherier.com
kazblog.hateblo.jp
locale を ja_JP.utf8 にして日本語環境にする
まずは日本語の locale (ja_JP.utf8) を install、setting します。
$ sudo apt install language-pack-ja $ sudo update-locale LANG=ja_JP.utf8 $ sudo apt install manpages-ja manpages-ja-dev
これで一旦 logout して login する (Ubuntu を終了してもう一度起動する) と、LANG 環境変数に ja_JP.utf8 が設定されます。この段階で、Windows Terminal 上の Ubuntu では、error message は日本語表示になりますし、man page も日本語が表示されます。
しかし、GUI application の menu 等は日本語で表示しようとするのですが、font が見つからずに乱れた表示となります。
日本語のフォントを使用できるようにする
Windows Terminal 以外でちゃんと日本語を表示させるためには、font を追加する必要があります。Ubuntu にも日本語の font が含まれていますが、Windows11 の Truetype font も使用できますので、こちらを追加して使えるようにします。
fontconfig が入っていない場合には install します。
$ sudo apt install fontconfig
/etc/fonts/local.conf
を新規に作成して以下を追加します。
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <dir>/mnt/c/Windows/Fonts</dir> </fontconfig>
これで Windows11 の Truetype font が使えるようになります。
$ fc-list | grep 'MS UI' /mnt/c/Windows/Fonts/msgothic.ttc: MS UI Gothic:style=標準,Regular $
日本語入力を GUI application で使えるようにする
fcitx-mozc を install します。これまで X 周りの application を install していない場合には大量に install されると思いますが、気にせずに進めます。
$ sudo apt install fcitx-mozc dbus-x11 $ sudo sh -c "dbus-uuidgen > /var/lib/dbus/machine-id"
.profile
に追記します。
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx export DefaultIMModule=fcitx if [ $SHLVL = 1 ] ; then (fcitx-autostart > /dev/null 2>&1 &) xset -r 49 > /dev/null 2>&1 fi
一旦 WSL2 を終了して再起動します。
command prompt :
> wsl --shutdown > ubuntu
fcitx-config-gtk3 で入力切替が Ctrl + Space になっているか確認します。
$ fcitx-config-gtk3
ここまでの設定で、GUI application で日本語が表示、入力できます。
試しに gedit を使用してみます。
$ sudo apt install gedit language-pack-gnome-ja
gedit で日本語を入力している状態です。
language-pack-gnome-ja を入れると menu が日本語になります。
fcitx の window が入力している文字の近くにないのは、今の所どうしようもないのでしょうね。徐々に完成度が高くなるのを期待します。
表示を 150% 拡大する
私の Monitor は 27inch の 4k (3840 x 2160) で、Windows11 の標準では 150% の拡大表示となっています。若干大きめですが、老眼が進んできた私の眼には丁度良い感じです。しかし、WSLg では等倍表示となっているので、文字が小さく見難い状態でした。今後は改善されるかもしれませんが、WSLg でも Windows11 と同じ 150% の scaling となるように調整しました。
調べてみると、3種類の方法がありました。
gsettings による方法
此方の page を参考にしました。
zenn.dev
gsettings
command で text の拡大率を指定できます。
$ gsettings set org.gnome.desktop.interface text-scaling-factor 1.5
これで text が 150% で表示されるようになります。動的に反映されて再起動しても有効です。おそらく gnome application には有効だと思います。1.0 を設定すれば元に戻ります。
gnome-tweaks
による方法
反映される個所は同じだと思いますが、gnome-tweaks
を使用すると GUI で設定できます。
$ sudo apt install gnome-tweaks $ gnome-tweaks &
左側の menu から「フォント」を選択して、倍率を「1.50」とすれば 150% に scaling されます。変更すれば直ぐに反映されます。また、上部でフォントの種類を指定できますので、gsettings
よりも使いやすいかと思います。とりあえず MS UI Gothic と MS Pゴシックを使用するように設定しました。
gsettings
でも gnome-tweaks
でも、どちらでも text を 150% に scaling 表示させる事が出来ました。とりあえずは font の設定もできる gnome-tweaks
を使ってみる事にしました。
.wslgconf
による方法
これまでの方法は、gnome の text を scaling する方法で、拡大された文字が綺麗に表示される反面、icon や graphic 画面は拡大されませんでした。icon については gnome-tweaks で適切な theme を選べば 反映されるかもしれませんが、graphic 画面についてはどうしようもありません。
どうしても graphic 画面を拡大表示したい場合には、WSLg の GUI を担当する Wayland が起動している仮想マシンの方の設定を変更する必要があります。
WSLg Configuration Options for Debugging
github.com
管理者で起動した Windows Terminal 内の WSL2 Ubuntu や、管理者で起動した Notepad じゃないと編集できません。
/mnt/c/ProngramData/Microsoft/WSL/.wslgconfig
:
[system-distro-env] ;hi-dpi WESTON_RDP_DISABLE_HI_DPI_SCALING=false WESTON_RDP_DISABLE_FRACTIONAL_HI_DPI_SCALING=false ;100 to 500 WESTON_RDP_DEBUG_DESKTOP_SCALING_FACTOR=200
WESTON_RDP_DEBUG_DESKTOP_SCALING_FACTOR
に % で指定します。WSL2 を shutdown して再起動すると反映されます。
command prompt :
> wsl --shutdown > ubuntu
150 も設定できますが、単純に1.5倍するので表示が汚くなります。200 だと粗が目立ちません。こちらの設定では、例えば qemu の SDL の表示も大きくなります。
流石に 200% scaling だと大きすぎるので、graphic 表示はガマンして text の 150% scaling で使ってみる事にします。
参考
5ch に参考になるログがありましたので引用します。(link は広告が色々とアレなのでやめておきます)
【Bash】Windows Subsystem for Linux【WSL】10 の 959 :
wayland/gtk3アプリのウィンドウフレーム含むテーマは
gnome-tweaksで簡単に設定できます。自分はjava/node.js/pythonとかの開発目的
DOS窓やPowerShellで苦労するのは時間の無駄
WSLgではemacs/zeal/electron等ほんといくつかさえ動けばいいい
日本語はemacsでしか入力しないからIMEも要らん
VS CodeやIntellijはWindows側からシームレスに使えるし
WSLgでざっとやったことは
- waylandアプリの4K 150%スケーリング
C:\ProgramData\Microsoft\WSL\.wslgconfに
[system-distro-env]
WESTON_RDP_DISABLE_FRACTIONAL_HI_DPI_SCALING=false環境変数設定
export GDK_DPI_SCALE=1.5
export QT_SCALE_FACTOR=1.5
export QT_QPA_PLATFORMTHEME=gtk2
export GTK2_RC_FILES=/usr/share/themes/Materia-dark-compact/gtk-2.0/gtkrc
- emacsのwaylandアプリ化
お勧めhttps://github.com/flatwhatson/emacs.git
- vGPU対応mesaのインストール
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt-get update簡単でしょw
私は emacs は使いませんし、vGPU mesa も今の所は使用しませんが、前半部分は非常に参考になりました。QT_SCALE_FACTOR
等は KDE application に有効だと思います(未確認)。
daemon の起動
WSL2 では Microsoft 独自の init が PID 1 で動作しています。その為、Ubuntu を含む最近の distribution で使用されている systemd では daemon を起動できません。かと言って runlevel で切り替える昔ながらの SystemV init という訳でもないようです。/etc/rc5.d/
等の folder は存在していますが、runlevel
command の結果は
$ runlevel unknown
と unknown
であり、ps aux
の表示を見ても daemon は殆ど起動していません。日本語入力の際に install した dbus と fcitx が起動しているのみです。
hiro@hiro-pc:~$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1756 1080 ? Sl 10:53 0:00 /init root 8 0.0 0.0 1756 80 ? S 10:53 0:00 /init hiro 46 0.0 0.1 73680 18232 ? Sl 10:53 0:00 /usr/lib/mozc/mozc_server root 66 0.0 0.0 7036 2140 ? S 10:54 0:00 dbus-launch --autolaunch c7e7d303d524f8d1ca0c95aa6205f7 root 67 0.0 0.0 7112 2424 ? Ss 10:54 0:00 /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 root 69 0.0 0.0 309012 8444 ? Sl 10:54 0:00 /usr/libexec/at-spi-bus-launcher root 74 0.0 0.0 7112 3820 ? S 10:54 0:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/ root 81 0.0 0.0 162880 6508 ? Sl 10:54 0:00 /usr/libexec/at-spi2-registryd --use-gnome-session root 158 0.0 0.0 1756 80 ? Ss 13:29 0:00 /init root 159 0.0 0.0 1756 80 ? R 13:29 0:00 /init hiro 160 0.0 0.0 9448 5132 pts/0 Ss 13:29 0:00 -bash hiro 230 0.0 0.0 7036 2116 pts/0 S 13:29 0:00 dbus-launch --autolaunch c7e7d303d524f8d1ca0c95aa6205f7 hiro 231 0.0 0.0 7112 2496 ? Ss 13:29 0:00 /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 hiro 234 0.4 0.2 106216 43492 ? S 13:29 0:00 fcitx hiro 241 0.0 0.0 7112 2880 ? Ss 13:29 0:00 /usr/bin/dbus-daemon --syslog --fork --print-pid 5 --pr hiro 245 0.0 0.0 5392 208 ? SN 13:29 0:00 /usr/bin/fcitx-dbus-watcher unix:abstract=/tmp/dbus-rMF hiro 248 0.0 0.0 9928 3348 pts/0 R+ 13:29 0:00 ps aux
WSL2 で systemd を使えるようにする事も出来るようです。後で試してみようと思っています。
snowsystem.net
この辺りも今後改善されるかもしれませんが、とりあえずは手動で起動させる方法で使ってみる事にしました。
方法は二種類あります。
/etc/init.d/
以下の script を実行する
昔ながらの SystemV 方式です。/etc/init.d/
以下にある daemon の script を使用して、起動・停止します。例えば cron であれば、
$ /etc/init.d/cron status * cron is not running $ sudo /etc/init.d/cron start * Starting periodic command scheduler cron [ OK ] $ /etc/init.d/cron status * cron is running $ ps aux | grep cron root 287 0.0 0.0 7848 2148 ? Ss 13:36 0:00 /usr/sbin/cron hiro 296 0.0 0.0 7352 728 pts/0 S+ 13:37 0:00 grep --color=auto cron $ sudo /etc/init.d/cron stop * Stopping periodic command scheduler cron [ OK ]
と操作できます。
service
command を使用する
service
command でも同様の事が出来ます。
$ which service /usr/sbin/service $ dpkg -S /usr/sbin/service init-system-helpers: /usr/sbin/service $ service cron status * cron is not running $ sudo service cron start * Starting periodic command scheduler cron [ OK ] $ service cron status * cron is running $ ps aux | grep cron root 355 0.0 0.0 7848 2144 ? Ss 13:51 0:00 /usr/sbin/cron hiro 366 0.0 0.0 7352 728 pts/0 S+ 13:57 0:00 grep --color=auto cron $ sudo service cron stop * Stopping periodic command scheduler cron [ OK ]
/etc/init.d/
に script が存在しない場合
application によっては、systemd と SystemV の script を分けてpackage としている場合もあります。例えば libvirtd
は、
$ apt search libvirt …略… libvirt-daemon-system-systemd/focal-updates 6.0.0-0ubuntu8.15 amd64 Libvirt daemon configuration files (systemd) libvirt-daemon-system-sysv/focal-updates,now 6.0.0-0ubuntu8.15 amd64 [インストール済み] Libvirt daemon configuration files (sysv) …略… $ dpkg -L libvirt-daemon-system-sysv /. /etc /etc/init.d /etc/init.d/libvirt-guests /etc/init.d/libvirtd /etc/init.d/virtlogd /usr /usr/share /usr/share/doc /usr/share/doc/libvirt-daemon-system-sysv /usr/share/doc/libvirt-daemon-system-sysv/changelog.Debian.gz /usr/share/doc/libvirt-daemon-system-sysv/copyright /usr/share/lintian /usr/share/lintian/overrides /usr/share/lintian/overrides/libvirt-daemon-system-sysv
となっていますので、libvirt-daemon-system-sysv
を install する必要があります。
まとめ
今回は、WSL2 & WSLg の初期設定についてまとめてみました。
- locale を日本語に設定 (
ja_JP.utf8
) - Windows11 の日本語フォントを使用
- 日本語入力の設定 (
fcitx-mozc
) - text を 150% scaling する設定 (
gnome-tweaks
) - daemon を起動 (
/etc/init.d/
以下の script)
ここまで設定すれば、日常的に WSL2 & WSLg を使用するには困らないと思います。今後も WSLg の update で更に使いやすくなると思いますので、その際にはこの記事に追記しようと考えています。
Kioxia の工場で不純物の混入が発生しているようです。
四日市工場と北上工場の操業について | KIOXIA
Western Digital Comments on Production Status of its Joint Venture Flash Memory Manufacturing Facilities | Business Wire
今の所、Amazon の価格も落ち着いているようです。早期の解決を願っています。