個別設定項目で各シェルをカスタマイズしよう
前回、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」となっている。この値を次のように変更してみる。
シェルのタブタイトルやドロップダウンメニューの表示名が変わったことがわかるだろう。ここではPowerShellを変更したが、UbuntuなどのWSL環境でも設定が反映される。ただしUbuntuのほうは標準ではドロップダウンメニューのみが変わる。
タブタイトルに対しては別に「tabTitle」という設定項目が用意されている。この設定項目を利用すると、タブタイトルはこちらに指定した値が優先される。
先ほどnameの値を「PowerShell」に変更したが、次のようにtabTitleを定義してみる。ドロップダウンメニューの表示名はnameで設定した値のまま、tabTitleに設定した値がタブタイトルとして表示されるようになる。
nameやtabTileの値を変更してもUbuntuのタブタイトルはデフォルトでは有効にならず、「ユーザー名@ホスト名:ディレクトリ」が表示されてしまう。タブタイトルを特定の値で表示させたい場合は、設定項目の「suppressApplicationTitle」を使えば解決できる。
次のようにsuppressApplicationTitleの値をtrueに設定してみる。するとUbuntuのタブタイトルがnameにデフォルトで設定されている値、「Ubuntu」で表示されるようになる。
もちろん、次のようにsuppressApplicationTitleの値を「true」に指定した状態でtabTitleを設定すれば、Ubuntuでもドロップダウンメニューとタブタイトルを異なる表示にできる。
シェルのタブ周りでは、タブの左側やドロップダウンメニューで表示されるアイコンも変更が可能だ。設定項目iconを利用し、値に画像ファイルを指定する。
画像ファイルの指定方法はバックグラウンドでの画像ファイルの指定方法と同じでフルパスを指定する。 なお、アイコン用の画像ファイルは32x32ピクセルサイズであり、ビットマップ形式(PNG/GIF/ICOなど)であることが必要だ。
実は、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スキームの利用を推奨されてはいるが、マストというわけでない。直接フルパスを指定するか、URIスキームを利用するかはお任せする。
シェルごとのタブをカスタマイズ
今回各シェルごとに設定できる設定項目のうち、設定例としてタブ関連のものを取り上げてみた。タブに関しては全体設定項目にもいくつか用意されているが、あちらはWindows Terminalでのタブの取り扱いに関してであり、今回の設定はより詳細な部分への対応となっている。
紹介した個別設定項目は、細かなものではあるがカスタマイズしやすい部分ではないだろうか。次回も引き続き、各シェル向けの個別設定項目について取り上げていく。