個別設定項目で各シェルをカスタマイズしよう

前回、Windows Terminal全体に影響する設定項目を紹介した。全体設定項目は主に起動時の挙動やウインドウ関連の設定などで、各シェルごとの設定向けではなかった。Windows Terminalでは各シェルごとの設定は別に用意されており、設定ファイル内の「”profiles:[]”」で定義するようになっている。

執筆時現在の最新バージョン(v 0.9)で、各シェルごとに設定できる項目は以下の通りだ。

項目 必須 初期値 内容
guid profilesのユニークIDを定義
name プロファイル名、ドロップダウンメニューの表示名
acrylicOpacity 0.5 透過時(useAcrylicがtrue)の透明度
background 背景色、カラースキーマより優先される
backgroundImage バックグランドに画像ファイルを指定
backgroundImageAlignment center ウインドウ内の画像ファイルの位置
backgroundImageOpacity 1 画像ファイルの鮮明度
backgroundImageStretchMode uniformToFill ウインドウサイズに対する画像ファイルの表示方法
closeOnExit graceful 終了時または起動失敗時のシェルの挙動
colorScheme Campbell カラースキーマ。schmesで定義
colorTable カラースキーマ未設定時のカラー配列定義
commandLine ターミナルの実行ファイル
cursorColor #FFFFFF カーソルのカラー
cursorHeight カーソルの高さ。cursorShapeがvintageの時のみに利用
cursorShape bar カーソルの形状
fontFace Consolas 使用するフォント
fontSize 12 フォントサイズ
foreground 前景色、カラースキーマより優先される
hidden false プロファイルの設定を隠す
historySize 9001 履歴サイズ
icon 使用するアイコン
padding 8,8,8,8 パディング
scrollbarState スクロールバーの表示/非表示
selectionBackground 文字列選択時の色
snapOnInput true コマンド入力時のウインドウスクロールの挙動
source プロファイル自動生成用のソース
startingDirectory %USERPROFILE% 初期ディレクトリ
suppressApplicationTitle trueの場合、tabTitleの値が優先される
tabTitle タブタイトル
useAcrylic false ウインドウの透過
experimental.retroTerminalEffect false レトロターミナルエフェクト

シェル用にかなり多くの設定項目が用意されていることがわかるだろう。なお、いくつかの項目に関しては以前に取り上げたカラー設定編やバックグラウンド設定編にて紹介しているので、設定方法についてはそちらを参照していただきたい。

個別設定項目のサンプル(Windwos Terminal v0.9時点)

実際に各シェルごとに設定できる項目を「profiles.json」に定義してみよう。個別設定項目はprofiles.jsonの「profiles:[]」内にあるそれぞれのシェルごとに用意されている設定場所「”{}”」に記述する。例えば、PowerShellのデフォルト設定は次のようになっており、この「”{}”」内に設定項目と値を定義することで、対象のシェルに反映させることができる。

    "profiles":
    [
        {
            // Make changes here to the powershell.exe profile
            "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "name": "Windows PowerShell",
            "commandline": "powershell.exe",
            "hidden": false
        },
    ...
    ],

まずは各シェルごとに設定必須のnameの値を変更してみよう。この項目に設定される値は、ドロップダウンメニューの表示名やタブタイトルなどに使われる。例えば、PowerShellのnameのデフォルトの値は「Windows PowerShell」となっている。この値を次のように変更してみる。

nameの値を変更

ドロップダウンメニューやタブタイトル内のシェル名が変わる

シェルのタブタイトルやドロップダウンメニューの表示名が変わったことがわかるだろう。ここではPowerShellを変更したが、UbuntuなどのWSL環境でも設定が反映される。ただしUbuntuのほうは標準ではドロップダウンメニューのみが変わる。

タブタイトルに対しては別に「tabTitle」という設定項目が用意されている。この設定項目を利用すると、タブタイトルはこちらに指定した値が優先される。

先ほどnameの値を「PowerShell」に変更したが、次のようにtabTitleを定義してみる。ドロップダウンメニューの表示名はnameで設定した値のまま、tabTitleに設定した値がタブタイトルとして表示されるようになる。

tabTitleを設定

タブタイトルの表示が変わる

nameやtabTileの値を変更してもUbuntuのタブタイトルはデフォルトでは有効にならず、「ユーザー名@ホスト名:ディレクトリ」が表示されてしまう。タブタイトルを特定の値で表示させたい場合は、設定項目の「suppressApplicationTitle」を使えば解決できる。

次のようにsuppressApplicationTitleの値をtrueに設定してみる。するとUbuntuのタブタイトルがnameにデフォルトで設定されている値、「Ubuntu」で表示されるようになる。

suppressApplicationTitleを設定(Ubuntu)

Ubuntuのタブタイトルの表示が変わる

もちろん、次のようにsuppressApplicationTitleの値を「true」に指定した状態でtabTitleを設定すれば、Ubuntuでもドロップダウンメニューとタブタイトルを異なる表示にできる。

suppressApplicationTitleを設定し、tabTitleの値を変更(Ubuntu)

UbuntuのタブタイトルがtabTitleの値に

シェルのタブ周りでは、タブの左側やドロップダウンメニューで表示されるアイコンも変更が可能だ。設定項目iconを利用し、値に画像ファイルを指定する。

画像ファイルの指定方法はバックグラウンドでの画像ファイルの指定方法と同じでフルパスを指定する。 なお、アイコン用の画像ファイルは32x32ピクセルサイズであり、ビットマップ形式(PNG/GIF/ICOなど)であることが必要だ。

iconでアイコン画像を設定

設定したアイコン画像に

実は、Windows Terminalではアイコンやバックグラウンドに画像ファイルを指定する場合、URI(Uniform Resource Identifier)スキームを利用するよう推奨している。例えばdefaults.json内でのアイコンの指定は、次のようにURIスキーム「ms-appx:///ProfileIcons/」を使っている。

"icon": "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png"

また、アイコンやバックグラウンドでカスタム画像ファイルを指定する場合、defaults.jsonで記載されている「ms-appx:///ProfileIcons/」ではなく、次のURIスキームを利用するよう推奨されている。

URIスキーム名 保存先フォルダの場所 説明
ms-appdata:///Local/ %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\ 個別利用向け
ms-appdata:///Roaming/ %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState\ 共通利用向け

推奨のURIスキームは「ms-appdata:///Local/」、または「ms-appdata:///Roaming/」となっており、例えば先ほどのアイコン画像を「ms-appdata:///Local/」で指定するのであれば、まずファイルを「%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\」に配置し、次のように設定すれば、Ubuntuのタブアイコンにカスタム画像ファイルが使われるはずだ。

アイコン画像をURIスキームのフォルダに保存

iconの指定にURIスキームを利用

なお、URIスキームの利用を推奨されてはいるが、マストというわけでない。直接フルパスを指定するか、URIスキームを利用するかはお任せする。

シェルごとのタブをカスタマイズ

今回各シェルごとに設定できる設定項目のうち、設定例としてタブ関連のものを取り上げてみた。タブに関しては全体設定項目にもいくつか用意されているが、あちらはWindows Terminalでのタブの取り扱いに関してであり、今回の設定はより詳細な部分への対応となっている。

紹介した個別設定項目は、細かなものではあるがカスタマイズしやすい部分ではないだろうか。次回も引き続き、各シェル向けの個別設定項目について取り上げていく。

参考資料