Windows Terminalと設定

本連載はPowerShell Coreがテーマだが、今回もWindows Terminalについて取り上げる。今後、WindowsにおけるPowerShell CoreまたはPowerSHell 7のデフォルトターミナルアプリケーションになる可能性が高いからだ。ここで基礎を抑えておこう。

Windowsアプリケーションは設定をダイアログなどから行うことが多く、設定ファイルを編集することで設定を行うということはあまりないように思う。しかし、Windows Terminalは最近のアプリケーションっぽく、設定変更がJSONファイルを編集するという行為になっている。執筆段階のWindows Terminalでは、右上の「∨」アイコンをクリックするとメニューが表示される。メニューから「Settings」をクリックすると、JSONファイルを編集できる。

右上の「∨」をクリックしてメニューを表示し、そこから「Settings」を選択

JSONファイルの編集はWindows Terminalではなく別のアプリケーションで行う。JSON編集用のアプリケーションをインストールしていなければメモ帳が候補としてあがってくるが、ほかにエディタアプリケーションをインストールしてそれを選んでもよいし、統合開発環境で編集するのもよいだろう。

ここではVisual Studio Codeを使った編集例を紹介しておく(Visual Studio Codeは現在もっとも人気の高いエディタであり開発環境になっている。クロスプラットフォームで動作し、さまざまなプログラミング言語に対応している)。

Windows TerminalのJSON形式設定ファイル

Windows Terminalの設定ファイルは次のようなJSON形式のファイルになっている。すべてを掲載すると長くなってしまうので、要点だけ抜き出したものを次に掲載する。

Windows TerminalのJSON形式設定ファイル(省略版)

{
    "globals" :
    {
        "alwaysShowTabs" : true,
        "defaultProfile" : "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
        "initialCols" : 120,
        "initialRows" : 30,
        "keybindings" :
        [
            {
                "command" : "closeTab",
                "keys" :
                [
                    "ctrl+w"
                ]
            },
        ...
        ],
        "requestedTheme" : "system",
        "showTabsInTitlebar" : true,
        "showTerminalTitleInTitlebar" : true
    },
    "profiles" :
    [
        {
            "acrylicOpacity" : 0.5,
            "closeOnExit" : true,
            "colorScheme" : "Campbell",
            "commandline" : "C:\\Program Files\\PowerShell\\6\\pwsh.exe",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "guid" : "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{574e775e-4f2a-5b96-ac1e-a2962a402336}.png",
            "name" : "PowerShell Core",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "useAcrylic" : false
        },
    ...
    ],
    "schemes" :
    [
        {
            "background" : "#0C0C0C",
            "black" : "#0C0C0C",
            "blue" : "#0037DA",
            "brightBlack" : "#767676",
            "brightBlue" : "#3B78FF",
            "brightCyan" : "#61D6D6",
            "brightGreen" : "#16C60C",
            "brightPurple" : "#B4009E",
            "brightRed" : "#E74856",
            "brightWhite" : "#F2F2F2",
            "brightYellow" : "#F9F1A5",
            "cyan" : "#3A96DD",
            "foreground" : "#F2F2F2",
            "green" : "#13A10E",
            "name" : "Campbell",
            "purple" : "#881798",
            "red" : "#C50F1F",
            "white" : "#CCCCCC",
            "yellow" : "#C19C00"
        },
    ...
    ]
}

勘の鋭い方ならこれで設定ファイルの構造は理解できるだろう。

globalsに全体の設定とショートカットキーの設定が用意されている。profilesにはシェルごとの設定が用意され、schemesにはprofilesのシェルが指定するカラーテーマが定義されている。

このファイルを編集して保存すると、リアルタイムにWindows Terminalの設定が変わり即時反映される仕組みになっている。

設定項目とその内容をざっとまとめると次のようになる。

項目 内容
alwaysShowTabs true 常にタブUIを表示
initialCols 120 初期幅
initialRows 30 初期高さ
defaultProfile デフォルトシェルを指定(GUID)
keybindings ショートカットキー設定
closeTab ctrl+w タブを閉じる
newTab ctrl+t タブを新規作成
newTabProfile0 ctrl+shift+1 タブを新規作成(プロファイル0)
newTabProfile1 ctrl+shift+2 タブを新規作成(プロファイル1)
newTabProfile2 ctrl+shift+3 タブを新規作成(プロファイル2)
newTabProfile3 ctrl+shift+4 タブを新規作成(プロファイル3)
newTabProfile4 ctrl+shift+5 タブを新規作成(プロファイル4)
newTabProfile5 ctrl+shift+6 タブを新規作成(プロファイル5)
newTabProfile6 ctrl+shift+7 タブを新規作成(プロファイル6)
newTabProfile7 ctrl+shift+8 タブを新規作成(プロファイル7)
newTabProfile8 ctrl+shift+9` タブを新規作成(プロファイル8)
nextTab ctrl+tab 次のタブへ移動
openSettings ctrl+, 設定を開く
prevTab ctrl+shift+tab 前のタブへ移動
scrollDown ctrl+shift+down スクロールダウン
scrollDownPage ctrl+shift+pgdn スクロールページダウン
scrollUp ctrl+shift+up スクロールアップ
scrollUpPage ctrl+shift+pgup スクロールページアップ
switchToTab0 alt+1 タブ0へ移動
switchToTab1 alt+2 タブ1へ移動
switchToTab2 alt+3 タブ2へ移動
switchToTab3 alt+4 タブ3へ移動
switchToTab4 alt+5 タブ4へ移動
switchToTab5 alt+6 タブ5へ移動
switchToTab6 alt+7 タブ6へ移動
switchToTab7 alt+8 タブ7へ移動
switchToTab8 alt+9 タブ8へ移動
requestedTheme system テーマ
showTabsInTitlebar true タブをタイトルバーに表示する
showTerminalTitleInTitlebar true ターミナルタイトルをタイトルバーに表示する
profiles プロファイル(シェル)設定
acrylicOpacity 0.5 不透明度
closeOnExit true 終了時にタブを閉じる
colorScheme Campbell カラースキーマ
commandline C:\Program Files\PowerShell\6\pwsh.exe シェルへのパス
cursorColor #FFFFFF カーソルカラー
cursorShape bar カーソル形状
fontFace Consolas フォント指定
fontSize 10 フォントサイズ
guid GUID
historySize 9001 履歴サイズ
icon アイコン指定
name PowerShell Core シェル名
padding 0,0,0,0 パディング
snapOnInput true
startingDirectory %USERPROFILE% 初期ディレクトリ
useAcrylic false
schemes カラースキーマ
background #0C0C0C 背景色
black #0C0C0C
blue #0037DA
brightBlack #767676 明るい黒
brightBlue #3B78FF 明るい青
brightCyan #61D6D6 明るいシアン
brightGreen #16C60C 明るい緑
brightPurple #B4009E 明るい紫
brightRed #E74856 明るい赤
brightWhite #F2F2F2 明るい白
brightYellow #F9F1A5 明るい黄
cyan #3A96DD シアン
foreground #F2F2F2 前景色
green #13A10E
name Campbell スキーマ名称
purple #881798
red #C50F1F
white #CCCCCC
yellow #C19C00

設定のいくつかは変更しても反映されないというか、まだ実装されていなかったりする。このあたりはいずれ設定が反映されるだろう。また、逆にサポートされているがデフォルトでは使われていない設定もある。

設定変更のサンプル

実際にJSONファイルを編集して保存してみよう。即座に設定が反映されることを確認できると思う。たとえば、次のスクリーンショットはWindows TerminalのJSON形式設定ファイルをVisual Studio Codeで編集しているところだ。タブの新規作成(newTab)のショートカットキーがCtrl-Tになっていることがわかる。

タブの新規作成のショートカットキー

この部分を、たとえば次のようにCtrl-Bに変更してみよう。

タブの新規作成ショートカットキーをctrl+tからctrl+bへ変更

この状態でJSONファイルを保存すると、Ctrl-Bでタブの新規作成ができることを確認できる。逆に、これまで使用できていたCtrl-Tではタブの新規作成ができなくなっていることも確認できると思う。

続いてはもっとわかりやすくカラースキーマを変更してみよう。次のスクリーンショットはWindows Terminalのデフォルトのカラースキーマで表示したものだ。

Windows Terminalのデフォルトのカラースキーマ

該当するプロファイルのcolorSchemeの項目を別のものに変えてみよう。デフォルトではCampbellになっていると思う。ここをたとえば次のようにSolarized Lightに変更してみる。どういった名前が利用できるかはJSON形式設定ファイルのスキーマの部分に記載されているnameを追っていけば調べることができる。

カラースキーマをSolarized Lightへ変更

編集して保存すると次のようにカラースキーマが瞬時に切り替わる。

カラースキーマがSolarized Lightへ自動的に切り替わる

次はOne Half Darkへ変更してみよう。

カラースキーマをOne Half Darkへ変更

変更を保存すると次のようにカラースキーマがOne Half Darkへ切り替わる。

カラースキーマがOne Half Darkへ自動的に切り替わる

デフォルトの設定には含まれていないのだが、Windows Terminalではターミナルの背景に画像ファイルを指定することができる。次のように画像ファイルと透過率の設定、どのようにレンダリングするのかの指定を追加すると、プロファイル(シェル)ごとに背景画像を指定することができる。

プロファイル(シェル)ごとに背景画像を設定

設定を保存すると次のように瞬時に背景画像が表示される。

指定した画像が背景として使われている

こんな感じでJSONファイルを編集するという行為が、Windows Terminalの設定を変更するという行為になっている。慣れないと驚くかもしれないが、慣れてしまえばどうということもない。設定ファイルをJSON形式で提供し、そのファイルを編集することで設定を変更するというのは最近の開発系アプリケーションではよく行われている方法だ。Windows Terminalもこうした形式にならったものとみられる。

設定を調整して好みのターミナルに

ターミナルアプリケーションの設定、特にカラー設定は好みが出やすい部分だ。自分の作業しやすいターミナルを用意する方法のひとつは、自分でカラー設定を調整することにある。

ここで紹介したようにWindows Terminalの設定はJSONファイルを編集するだけだ。いまのところ必要最小限の設定は提供されているように見える。今後デフォルトで使われていくことが想定されるアプリケーションであるだけに、早めに慣れておきたい。

参考資料