まるまろぐ

本ブログに記載の情報は全て飼い犬が書いたものであり、その内容に誤りや欠陥があった場合にも、私は一切の責任を負いません。

WSLでPowerlevel10kを使う時に日本語を表示する方法

Powerlevel10kをフルに活用するためには、Nerd Fontsを使用する必要があります。

公式ではMeslo Nerd Font patched for Powerlevel10kが推奨されていますが、これを利用した場合、単にUbuntu Terminal等のプロパティでフォントをこれに変更しても、日本語が文字化けするようになってしまいます。

普通ターミナルで設定されているフォントに対応する文字がなかった場合はフォントフォールバックしてシステムのデフォルトのフォント等で代替してくれるのですが、WSLのターミナルではフォールバックしてくれずそのまま文字化けしてしまうのが原因のようです(よく知りませんが、Windowsに昔からあるコンソールであるconhost.exeもフォールバックしてくれないので、これを引き継いでしまっているんでしょうか)。

そこで、2つの方策が考えられます。

  1. Windows Terminal 上でWSLを使う
  2. 日本語+Nerd Fontsのフォントを使う

1. Windows Terminal 上でWSLを使う

Windows Terminalは、太古の昔、恐竜が生まれるより前から存在するconhost.exeに代わるモダンなターミナルです。フォントフォールバックにも対応しているので、単にMesloLGS NFをフォントに設定すれば日本語は代替フォントで表示してくれます。というか、この記事を書いていて気づきましたが今はWSLのインストールガイドにもWindowsターミナルをインストールするという項目があるんですね……。以下に手順を示します。

  1. WSLとWindows Terminalをインストール
  2. MesloLGS NFをインストール
  3. Windows Terminalを開いてCtrl + ,してsettings.jsonを好きなエディタで開き、フォント等を設定(以下は設定例)
{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",

    // (省略)

    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
        },
        "list":
        [
            {
                // Make changes here to the powershell.exe profile.
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            },
            {
                // Make changes here to the cmd.exe profile.
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "Command Prompt",
                "commandline": "cmd.exe",
                "hidden": false
            },
            {
                "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
                "hidden": false,
                "name": "Ubuntu-20.04",
                "source": "Windows.Terminal.Wsl",
                "startingDirectory": "//wsl$/Ubuntu-20.04/home/{username}",
                "fontFace": "MesloLGS NF",
                "fontSize": 10
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            }
        ]
    },

変更箇所:

  • "defaultProfile""list"中のUbuntu-20.04のguidに変更
  • "list"`中のUbuntu-20.04に以下の3つの項目を追加:
    • "startingDirectory": "//wsl$/Ubuntu-20.04/home/{username}" ({username}はWSL側の自分のユーザー名)
    • "fontFace": "MesloLGS NF"
    • "fontSize": 10

2. 日本語+Nerd Fontsのフォントを使う

Nerd Fontsはパッチスクリプトも提供しているので、任意の日本語対応フォントにこれを当てて使用することでも対応できます(たぶん)。

ただ、世の中にはNerd Fonts合成済みの日本語対応フォントを配布してくれている方もいるので、そちらを利用するのが良いかと思います。

を試してみましたが、自分の環境だとHackGenNerd Console以外は表示が崩れてしまいました。逆に、HackGenNerd Consoleであれば少し試した限りではほぼ完全に表示できていました。

おわりに

当たり前ですが、1と2を組み合わせてWindows Terminal上でHackGenNerd Consoleを使うのもありです(僕はそうしています)。