Windows Terminalの現時点での設定可能項目について

数日前にMicrosoft Storeで公開されたWindows Terminalを インストールしていろいろいじってみたので、2019/06/27時点での設定ファイルの書き方や設定内容について、 自分への備忘録的にまとめておこうと思います。

(2019/06/29 追記) もうちょっと実際に設定するなどして内容をアップデートしました

注意

  1. あんまり情報がないので、Try&Errorだったりソースコードからの推測だったりで書いている情報があります
  2. 調べても現時点でよく分かんないこともたくさんあります
  3. 誤った情報が盛りだくさんの危険性があります
  4. プレビュー版に対する設定ファイルの書き方なので、後日めちゃくちゃ変更される可能性があります
  5. そのうちMicrosoftくんが公式のドキュメントをまとめてくれるかもなので(すでにある?)、そっちがあったらそっちを見てください

設定ファイルの開き方

Windows Terminal上部にある「+」の横をクリックして出てくるメニューのSettingを選びます。 設定ファイルの開き方

なおこのファイルは、以下に配置されています。
C:\Users\$USER\AppData\Local\Packages\Microsoft.WindowsTerminal_{ランダムな英数字列}\RoamingState

設定ファイルの構造

大きく分けて、下のような構造になっています。

{
    "globals" : 
    {
        Windows Terminal 全体の設定
    },
    "profiles" :
    [
        {
            コマンドプロンプトとかPowerShellとかWSLとか、
            Windows Terminal経由で起動するプログラムの設定
        }
    ],
    "schemes" : 
    [
        {
            カラースキーマの設定
        }
    ],
}

設定内容(2019/06/27時点)

カラースキーマ設定

"schemes"に設定を追記していきます。例えばデフォルトのカラースキーマの1つであるCampbellの設定は次のとおり。

        {
            "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"
        },

nameがカラースキーマ名で、backgroundおよびforegroundがそれぞれ背景色と前景色。 あとはキー名の通り、各色の設定です。

使い方は、後述のprompt設定において、 使用するカラースキーマ設定にnameに指定した名前を設定することで そのカラースキーマが適用されます。

デフォルトでいくつか定義されているけど、そんなに数も多くないし、 自分で作るっていうのもあれなので、先人が作ってくださった設定をコピペして使うのがいいと思います。

mac使っている人とかにはおなじみのiTerm Color Schemesに なんとWindows Terminalで使うための設定ファイルWindows Terminalの公開に合わせて用意されている(!!)ので、 ありがたくそれを使わせてもらうと捗ります。

グローバル設定

Windows Terminalの挙動を定義するもので、次の項目が設定可能です。 globals設定に記載します。

    "globals" : 
    {
        "alwaysShowTabs" : true,
        "defaultProfile" : " ... ",
        "initialCols" : 120,
        "initialRows" : 30,
        "keybindings" : 
        [ ... ],
        "requestedTheme" : "system",
        "showTabsInTitlebar" : false,
        "showTerminalTitleInTitlebar" : false
    },
設定名 設定可能値 内容
alwaysShowTabs true/false 常時タブを表示する。falseかつshowTabsInTitlebarもfalseだと起動時にタブ領域が表示されないし、ついでにGUI操作で新しいタブを開いたり設定ファイルを開いたりできなくなる。
defaultProfile 文字列 Windows Terminal起動時に起動するprompt設定のguidの値
initialCols 整数値 【憶測】画面起動時の画面幅(桁数)
initialRows 整数値 【憶測】画面起動時の画面高さ(行数)
keybindings 別記 ショートカットキー設定
requestedTheme system/dark/light UIテーマ
dark/lightはそれぞれダークテーマ・ライトテーマでsystemはシステム設定に合わせる、というものだと思います。
あと、これ以外の値を設定した場合は多分systemになります。下記参照
showTabsInTitlebar true/false trueだとタイトルバーと切り替えタブが融合する
showTerminalTitleInTitlebar true/false trueだと選択しているタブのタイトルがタイトルバーにも表示される。showTabsInTitlebarがtrueだと一見何が変わったのかよく分からないですが、ちゃんとタスクバーにマウスカーソル持っていくと、表示されるテキストがこの設定の影響を受けます

requestedTheme

f:id:e8l:20190628202220p:plain
requestedThemedarkを設定

f:id:e8l:20190628202453p:plain
requestedThemelightを設定

showTabsInTitlebar

f:id:e8l:20190628202751p:plain
showTabsInTitlebartrueを設定

f:id:e8l:20190628202859p:plain
showTabsInTitlebarfalseを設定

ショートカットキー設定

global設定中のkeybindingsに設定します。

    "globals" : 
    {
        "keybindings" : 
        [
            {
                "command" : "closeTab",
                "keys" : 
                [
                    "ctrl+w"
                ]
            }, ...
        ]
    }
設定名 設定可能値 内容
command 別表 ショートカットキーで実行する操作。別表に設定可能値を記載
keys 文字列の配列 ショートカットキー 書き方はデフォルトの設定を見れば分かると思うので割愛。配列になっているから複数設定できそうだけど、現時点ではできないようで、設定するとなかったことにされます(設定が削除されます!)

commandに設定できるものは、デフォルト設定から分かるものとソースコードから、 次のものが設定できるようです(使えるかはちゃんと調査していないです)。

設定可能値 内容
closeTab タブを閉じる
closeWindow ソースコード】ウィンドウを閉じる 試したら設定自体はvalid判定みたいだけど、動作はしなかった
copy ソースコード】コピー これはちゃんと動く
decreaseFontSize ソースコード】フォントサイズを小さくする 試したら設定自体はvalid判定みたいだけど、動作はしなかった
increaseFontSize ソースコード】フォントサイズを大きくする 試したら設定自体はvalid判定みたいだけど、動作はしなかった
newTabProfile0 profilesの1番目の設定で新しいタブを開く
newTabProfile1 profilesの2番目の設定で新しいタブを開く
newTabProfile2 profilesの3番目の設定で新しいタブを開く
newTabProfile3 profilesの4番目の設定で新しいタブを開く
newTabProfile4 profilesの5番目の設定で新しいタブを開く
newTabProfile5 profilesの6番目の設定で新しいタブを開く
newTabProfile6 profilesの7番目の設定で新しいタブを開く
newTabProfile7 profilesの8番目の設定で新しいタブを開く
newTabProfile8 profilesの9番目の設定で新しいタブを開く
newTab profilesの1番目の設定で新しいタブを開く
newWindow ソースコード】新しいウィンドウを開く 試したら設定自体はvalid判定みたいだけど、動作はしなかった
nextTab 次のタブに移動する
openSettings 設定ファイルを開く
paste ソースコード】ペースト こちらはinvalidな設定判定になり、設定が削除された
prevTab 前のタブに移動する
scrollDownPage 1ページ分下に進む
scrollDown 1行分下に進む
scrollUpPage 1ページ分上に戻る
scrollUp 1行分上に戻る
splitHorizontal 上下に画面分割する ちゃんと動いた!
splitVertical 左右に画面分割する ちゃんと動いた!
switchToTab0 左から1番目のタブに移動する
switchToTab1 左から2番目のタブに移動する
switchToTab2 左から3番目のタブに移動する
switchToTab3 左から4番目のタブに移動する
switchToTab4 左から5番目のタブに移動する
switchToTab5 左から6番目のタブに移動する
switchToTab6 左から7番目のタブに移動する
switchToTab7 左から8番目のタブに移動する
switchToTab8 左から9番目のタブに移動する
switchToTab ソースコード】どこかのタブに移動する? こちらはinvalidな設定判定になり、設定が削除された

プロファイル設定

起動するプログラム(コマンドプロンプト/PowerShell/WSLなどなど)やその表示の方法について設定します。 上にあるものほど、リストの上部に表示されるようです。

    "profiles" : 
    [
        {
            "acrylicOpacity" : 0.5,
            "background" : "#012456",
            "closeOnExit" : true,
            "colorScheme" : "Monokai Remastered",
            "commandline" : "powershell.exe",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "guid" : "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png",
            "name" : "Windows PowerShell",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "useAcrylic" : false
        },
    ]
設定名 設定可能値 内容
acrylicOpacity 0.0 ~ 1.0 画面の不透明度。0で完全な透明。1.0で完全な不透明
background #rrggbb形式の色コード 背景色 カラースキーマ設定よりも優先されるよう
closeOnExit true/false exitを実行するなどして終了した場合に自動でタブを閉じるかどうか
colorScheme 文字列 カラースキーマ設定 schemes設定の中から使いたい設定のnameに設定されている値を指定する
commandline 文字列 実行するコマンドへのパス。バックスラッシュを使用する場合はちゃんと\\エスケープすること
cursorColor #rrggbb形式の色コード カーソルの色
cursorShape vintage/bar/underscore/filledBox/emptyBox カーソルの形状。下記参照
cursorHeight 整数値 cursorShapevintageを設定しているときのカーソルの高さ(ピクセル?)
fontFace 文字列 使用するフォント。日本語名フォントをどう設定するかは分からないけど、多分VSCodeと同じような指定方法でいけるのではないかなと思う
fontSize 整数値 フォントの大きさ。単位は分からないけど多分ポイント?
guid 自分で設定しない この設定に対するUUID 新しく設定を作ってWindows Terminalを起動すると勝手に設定してくれる Window Terminal起動時に立ち上げたいものは、globalsdefaultProfileにこの値を設定する
historySize 整数値 【憶測】コマンド履歴の…単位はなんだ? 行数? バイト数? 件数?
icon 文字列 リストに表示されるアイコン画像へのパス。この設定ファイルが置かれている場所(C:\Users\$USER\AppData\Local\Packages\Microsoft.WindowsTerminal_{ランダムな英数字列}\RoamingState)を表すパスms-appdata:///roaming/も使用可能。
name 文字列 リストに表示されるプロファイル名
padding 左パディング(整数値),上パディング(整数値),右パディング(整数値),下パディング(整数値) タブの表示領域に対してパディング(余白)を設定する。多分背景画像との兼ね合いに使う。単位は多分ピクセルだと思いますが、詳細不明
snapOnInput true/false よくわかりません
startingDirectory 文字列 初期ディレクトリのパス
useAcrylic true/false trueの場合、acrylicOpacity設定に応じてウィンドウを半透明表示する
backgroundImage 文字列 背景画像へのパス。GIFアニメも設定できるらしい。すごい
backgroundImageOpacity 0.0~1.0 背景画像の透明度。0で完全な透明(になるので背景色に設定した色だけが表示される)。1.0で完全な不透明。
backgroundImageStretchMode none/fill/uniform/uniformToFill 背景画像の表示方法
none そのまま表示する
fill ウィンドウの大きさに合わせて拡大縮小する
uniform 背景画像のアスペクト比を保ったまま拡大縮小する
uniformToFill 背景画像のアスペクト比を保ったまま拡大縮小するが、ウィンドウのアスペクト比と異なる場合は適宜クリッピングする
scrollbarState visible/hidden ソースコード】スクロールバーを表示するかどうか hiddenだとスクロールバーが表示されない

cursorShape

f:id:e8l:20190628205835p:plain
bar
f:id:e8l:20190628205938p:plain
underscore
f:id:e8l:20190628210043p:plain
filledBox
f:id:e8l:20190628210126p:plain
emptyBox
f:id:e8l:20190628210231p:plain
vintage

backgroundImageStretchMode

f:id:e8l:20190628211155p:plain
noneを設定
f:id:e8l:20190628211305p:plain
fillを設定
f:id:e8l:20190628211641p:plain
uniformを設定
f:id:e8l:20190628211746p:plain
uniformToFillを設定

最後に

なんか、間違った設定とかしているとWindows Terminalくんが勝手に設定削除してくれるので、 バックアップとってからいじったほうがいいです。

間違ってたり、これ知ってるよみたいなことがあったりしたら教えてください。 もう1時すぎてんじゃん……。眠すぎて死ぬ……。