Windows Terminal の設定ファイルは2つある

Windows向けに開発されている多くのGUIアプリケーションは、通常そのアプリケーションが提供している設定ダイアログを操作して設定を行う。しかしながらWindows Terminalの場合は異なり、テキスト形式の設定ファイルを編集して設定を行う仕組みになっている。

設定を行う際は、ウインドウ右上の「∨」アイコンをクリックして表示されるプルダウンメニューから「Settings」を選択する。これでテキストエディタが立ち上がり、設定ファイルが開く。

設定ファイルを開く「Settings」メニュー

「Settings」を選択すると、通常は標準のテキストエディタである「メモ帳」を使って設定ファイルが開かれる。Windows Terminalの設定ファイルは、JSON(JavaScript Object Notation)と呼ばれる表記法を採用しており、この表記法に則ったテキスト形式のファイルを編集して設定を行うようになっている。

実は、Windows Terminalには設定ファイルが2つ用意されている。1つがデフォルトの設定を持つファイル「defaults.json」で、もう1つがユーザーのカスタマイズ用に用意されているファイル「profiles.json」だ。defaults.jsonは起動時に生成される設定ファイルとなっており、エディタで編集することは可能だが書き込んだ設定は保存しても破棄されてしまう。

Windows Terminalの設定をカスタマイズしたい場合は、profiles.jsonを利用する。そのため、プルダウンメニューから「Settings」を選択した場合、こちらの設定ファイルが開くようになっている。なお、defaults.jsonを開きたい場合は、「Alt」キーを押しながら「Settings」を選択すればよい。各設定ファイルの中身はそれぞれ以下のようになっている。

■JSON形式設定ファイルdefaults.json(一部省略)

// THIS IS AN AUTO-GENERATED FILE! Changes to this file will be ignored.
{
    "alwaysShowTabs": true,
    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "initialCols": 120,
    "initialRows": 30,
    "requestedTheme": "system",
    "showTabsInTitlebar": true,
    "showTerminalTitleInTitlebar": true,
    "tabWidthMode": "equal",
    "snapToGridOnResize": false,
    "wordDelimiters": " /\\()\"'-.,:;<>~!@#$%^&*|+=[]{}~?\u2502",

    "profiles":
    [
        {
            "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "name": "Windows PowerShell",
            "commandline": "powershell.exe",
            "hidden": false,
            "startingDirectory": "%USERPROFILE%",
            "closeOnExit": "graceful",
            "colorScheme": "Campbell Powershell",
            "cursorColor": "#FFFFFF",
            "cursorShape": "bar",
            "fontFace": "Consolas",
            "fontSize": 12,
            "historySize": 9001,
            "icon": "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png",
            "padding": "8, 8, 8, 8",
            "snapOnInput": true,
            "useAcrylic": false
        },
    ...
    ],
    "schemes":
    [
    ...
        {
            "name": "Campbell Powershell",
            "foreground": "#CCCCCC",
            "background": "#012456",
            "black": "#0C0C0C",
            "red": "#C50F1F",
            "green": "#13A10E",
            "yellow": "#C19C00",
            "blue": "#0037DA",
            "purple": "#881798",
            "cyan": "#3A96DD",
            "white": "#CCCCCC",
            "brightBlack": "#767676",
            "brightRed": "#E74856",
            "brightGreen": "#16C60C",
            "brightYellow": "#F9F1A5",
            "brightBlue": "#3B78FF",
            "brightPurple": "#B4009E",
            "brightCyan": "#61D6D6",
            "brightWhite": "#F2F2F2"
        },
    ...
    ],
    "keybindings":
    [
        { "command": "closePane", "keys": [ "ctrl+shift+w" ] },
        { "command": "closeWindow", "keys": [ "alt+f4" ] },
        { "command": "copy", "keys": [ "ctrl+shift+c" ] },
        { "command": "decreaseFontSize", "keys": [ "ctrl+-" ] },
        { "command": "duplicateTab", "keys": [ "ctrl+shift+d" ] },
        { "command": "increaseFontSize", "keys": [ "ctrl+=" ] },
    ...
    ]
}

■JSON形式設定ファイルprofiles.json(初期設定状態)

// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation

{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",

    "profiles":
    [
        {
            // 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": "cmd",
            "commandline": "cmd.exe",
            "hidden": false
        },
        {
            "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
            "hidden": false,
            "name": "Azure Cloud Shell",
            "source": "Windows.Terminal.Azure"
        }
    ],

    // Add custom color schemes to this array
    "schemes": [],

    // Add any keybinding overrides to this array.
    // To unbind a default keybinding, set the command to "unbound"
    "keybindings": []
}

このようにWindows Terminalには設定ファイルが2つある。では、defaults.jsonで定義されている設定をprofiles.jsonで値を変更して設定した場合、どちらが有効になるかと言うと、profiles.jsonが優先される。defaults.json内で定義されていても、profiles.json内で設定し直しさえすれば、そちらが有効になるのだ。

Windows Terminalではこうした仕組みを採用することで、開発チーム側はアップデート時にdefaults.jsonの設定を書き換えて標準の設定を変えることができ、ユーザー側はprojfiles.jsonを書き換えることでカスタマイズできるようにしている。

Windows Terminalの設定方法

では、設定ファイルの中身を見ていこう。profiles.jsonのほうは標準ではほとんど設定が記載されていないため、説明にはdefaults.jsonを使いたい。

defaults.jsonの最初の数行はWindows Terminal全体の設定を定義している。「”profiles:{}”」にはターミナルアプリケーションごとの設定が、「”schemes:{}”」にはprofiles内で指定できるカラーテーマ「”colorScheme:”」の設定が、「”keybindings:{}”」でショートカットキーの設定が行われている。

テキストエディタでdefaults.jsonを表示

先述の通り、defaults.jsonは都度生成される設定ファイルであるため、設定を変更したい場合はprofiles.jsonを編集して行う。defaults.jsonを見ればある程度設定の仕方がわかると思うので、カスタマイズする際はdefaults.jsonを見ながら、または設定をコピーしてprofiles.jsonを書き換えるとよいだろう。

defaults.jsonで設定されている項目とその内容を紹介しよう。まず、Windows Terminal全体の設定項目は次のようになっている。

項目 初期値 内容
alwaysShowTabs true 常にタブUIを表示
defaultProfile PowerShellのguid デフォルトプロファイルを指定(profiles内のguid)
initialCols 120 ウインドウサイズの幅
initialRows 30 ウインドウサイズの高さ
requestedTheme system テーマの設定
showTabsInTitlebar true タイトルバー内にタブを表示する
showTerminalTitleInTitlebar true ターミナルタイトルをタブバーに表示する
tabWidthMode equal タブバーのタイトル幅
snapToGridOnResize false ウインドウリサイズ時の動き
wordDelimiters 設定ファイルを参照 ダブルクリックで文字選択する際の区切り文字

次に「”profiles:{}”」、「”schemes:{}”」で設定できる設定項目を紹介する。「”keybindings:{}”」については、先ほどと同様だ。

項目 PowerShellの初期値 内容
guid 設定ファイルを参照 profilesのユニークIDを定義
name Windows PowerShell ターミナル名
commandLine powershell.exe ターミナルの実行ファイル
hidden false プロファイルの設定を隠す
startingDirectory %USERPROFILE% 初期ディレクトリ
closeOnExit graceful 終了時のプロファイルの挙動
colorScheme Campbell Powershell カラースキーマ。schmesで定義
cursorColor #FFFFFF カーソルのカラー
cursorShape bar カーソルの形状
fontFace Consolas 使用するフォント
fontSize 12 フォントサイズ
historySize 9001 履歴サイズ
icon 設定ファイルを参照 使用するアイコン
padding 8,8,8,8 パディング
snapOnInput true コマンド入力時のウィンドウスクロールの挙動
useAcrylic false ウインドウの透過
項目 PowerShellの初期値 内容
name Campbell Powershell スキーマ名称
foreground #CCCCCC 前景色
background #012456 背景色
black #0C0C0C
red #C50F1F
green #13A10E
yellow #C19C00
blue #0037DA
purple #881798
cyan #3A96DD シアン
white #CCCCCC
brightBlack #767676 明るい黒
brightRed #E74856 明るい赤
brightGreen #16C60C 明るい緑
brightYellow #F9F1A5 明るい黄
brightBlue #3B78FF 明るい青
brightPurple #B4009E 明るい紫
brightCyan #61D6D6 明るいシアン
brightWhite #F2F2F2 明るい白

このように、各項目ごとにさまざまな設定が用意されている。設定できる項目については、Windows TerminalのGithubにドキュメント「Profiles.json Documentation」が用意されている。このドキュメントは執筆時現在のWindows Terminal v0.8.10261の設定項目であり、バージョンによって設定項目や初期値が変わる可能性がある。Windows Terminalのアップデートを行った際は、Githubで対象のバージョンの設定ドキュメントを確認しておくといいだろう。

では、実際にテキストエディタでprofiles.jsonを編集してみよう。Windows Terminalは設定ファイルを書き換えて保存すると、設定項目にもよるが即座に反映されるようになっている。一例として、ここではフォントサイズを変更してみる。

Windows TerminalでPowershellを開いた状態で、次のようにprofiles.json内のprofilesにあるPowerShellの設定内に「”fontSize”: 10」の1行を追加して保存してみよう。PowerShellのフォントサイズが設定ファイルの保存とともにすぐに変更されることがわかるはずだ。

PowerShellのフォントサイズを変更

フォントサイズが標準では12(左)とフォントサイズを10に変更後(右)

なお、Windows TerminalはUbuntuなどのWSL環境がインストールされている場合、自動的に検出してprofiles.jsonの「”profiles:{}”」内に最低限の設定を書き込むという親切な設計となっている。WSL環境をWindowsにインストール後、すぐにWindows Terminalで利用/カスタマイズできるようにしているわけだ。

profiles:{}内に書き込まれる最低限の設定(Ubuntuの場合)

設定ファイルの編集には「Visual Studio Code」

今回、Windows Terminalの設定について紹介してきた。すでにお気付きの方もいるだろうが、本稿では設定ファイルの編集にテキストエディタとしてメモ帳ではなく「Visual Studio Code」を利用している。

Visual Studio CodeはMicrosoftが開発しているマルチプラットフォーム対応のオープンソースエディタだ。Microsoft主導で開発しているため、Windowsとの親和性が高く、さまざまなプログラミング言語に対応しており、JSONの編集にも適している。設定ファイルの編集はメモ帳でも行えるが、使用してもらえばわかると思うがJSON形式である設定ファイルを編集するのに便利なツールになっているので、Windows Terminalをカスタマイズする際はぜひ使ってみてほしい。

Visual Studio Code

Windows Terminalがテキストベースの設定ファイルの編集による設定方法となっているのは、単純にまだWindows Terminalがプレビュー版であり、開発が設定ダイアログまで進んでいないという可能性はある。将来は他のGUIアプリケーションと同じように設定ダイアログが用意されるかもしれないが、現状は本稿で説明したようにJSONファイルを編集するかたちとなっている。

設定ダイアログに慣れた方は少し尻込みしてしまうかもしれないが、ドキュメントの設定項目を参考に設定ファイルを編集するだけなので、そう難しいものではないと思う。せっかくWindows Terminalを使うのであれば、設定ファイルを編集して自分好みのターミナルを手に入れてみてはいかがだろうか。

次回はこの設定ファイルについてもう少し掘り下げ、自分好みのWindows Terminalを手にするための手助けとなるようなカスタマイズを紹介したい。

参考資料