やること
この記事では Windows Terminal の設定について書きます。
また PowerShell Core 7 の内容には触れませんが、Windows Terminal 上で使う場合の設定を書きます。
前提
- Windows 10 Pro
- PowerShell Core 6 がインストールされていないこと。
- v6 と v7 の環境共存についてはこの記事では触れません。
目次
- PowerShell Core 7 をインストール (MSIX パッケージ使用)
- Windows Terminal をインストール (Windows Store 使用)
- Windows Terminal で PowerShell Core 7 を起動
- Windows Terminal 設定
2. 概要
2. デフォルトシェル
2. フォント
2. カラースキーム
2. アイコン
2. 背景
2. コピーペースト
2. ブラウン管風画面 - Awesome PowerShell
1. PowerShell Core 7 をインストール (MSIX パッケージ使用)
PowerShell Core 7 を導入しない場合はここは飛ばしてください。
PowerShell Core の GitHub Release ページから拡張子が msix
のファイルをダウンロードします。
執筆時は PowerShell-7.0.0-rc.1-win-x64.msix
をダウンロードしました。
MSIX パッケージはファイルをダブルクリックではインストールできないので、PowerShell プロンプトを開いて以下を実行してインストールします。
# ファイルのあるフォルダで実行する
Add-AppxPackage PowerShell-7.0.0-rc.1-win-x64.msix
ちなみに v7 からはアイコンが以下のように変わったみたいです。
他のインストール方法は以下を参照してください。
参考: Windows への PowerShell Core のインストール - PowerShell | Microsoft Docs
2. Windows Terminal をインストール (Windows Store 使用)
Windows Terminal は Windows Store からインストールします。
Terminal
で検索すれば出てきます。(下図の一番左)
3. Windows Terminal で PowerShell Core 7 を起動
初期状態だとメニューに PowerShell Core が表示されません。1
これを以下のようにします。
メニューから Settings を開き、profile.json
を開きます。
このとき *.json
に関連付けが無い場合はメモ帳が開きます。
別のエディタで編集したい場合は関連付けしておきましょう。
追加する設定は以下の通りです。
"profiles":
[
// 省略
{
"guid": "{afaa79f1-5186-4f66-9c26-57671e5ab2a7}",
"name": "PowerShell Core 7.0.0v-rc.1",
"commandline": "pwsh.exe",
"icon": "C:\\Program Files\\WindowsApps\\Microsoft.PowerShell_7.0.1.0_x64__8wekyb3d8bbwe\\assets\\Powershell_av_colors.ico",
"hidden": false
},
// 省略
設定は基本的にファイルを保存すると即時反映されます。
設定ミスがある場合は Windows Terminal 側でエラーの場所が表示されます。
設定値の説明
簡単に設定した値の説明をします。
設定値 | 説明 |
---|---|
guid |
ユニークID (後述) |
name |
表示名 |
commandline |
シェルの実行ファイル |
icon |
アイコン画像のファイルパス |
hidden |
メニューに表示するかどうか |
guid
はアプリケーションとは全く関係ないと考えて良いようです。
私も最初、cmd や PowerShell Core v6 の guid
がどの解説ページを見ても同じだったので PowerShell Core v7 も決まった値があると思って探しました。しかし結論は Windows Terminal の説明ではどこにもアプリケーションに紐付くとは書いておらず、ただ「設定を一意に特定する」とだけ書いてあります。つまりユニークなIDであれば何でもいいと解釈しました。
解説ページで同じなのは Windows Terminal のデフォルト設定にハードコードされているからです。
Issue を流し読みしたところ guid
の生成には PowerShell で new-guid
を実行すれば良いようです。
PS C:\> new-guid
Guid
----
4e66dda2-8853-4195-bcec-91e64f154726
4. Windows Terminal 設定
4-1. 概要
Windows Terminal の設定を理解するには以下を見れば大体分かります。
-
Editing Windows Terminal JSON Settings
- 設定のガイド
-
Profiles.json Documentation
-
profile.json
のスキーマ解説 - vscode だと JSON スキーマを参照してタブ補完や解説を表示してくれる
-
-
default.json
- ハードコードされているグローバルの設定値
- 組み込みのカラースキームなどはこれで設定されている
profile.json
のパスと特殊な URI スキーム
ms-appdata:///Local/
という URI は profile.json
のあるパスを指します。2
同じフォルダに背景画像などを入れておくと便利です。
profile.json
のパスは以下の通りです。
%localappdata%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\
詳しくはこちらを参照して下さい。
4-2. デフォルトシェル
defaultProfile
に設定した guid
の値と対応する設定がデフォルトシェルになります。
例: PowerShell Core v7 をデフォルトコンソールにする
{
"$schema": "https://aka.ms/terminal-profiles-schema",
"defaultProfile": "{afaa79f1-5186-4f66-9c26-57671e5ab2a7}",
"profiles":
[
// 省略
{
"guid": "{afaa79f1-5186-4f66-9c26-57671e5ab2a7}", // この値を設定
"name": "PowerShell Core 7.0.0v-rc.1",
// 省略
4-3. フォント
fontFace
と fontSize
で設定出来ます。
例: 白源フォント, フォントサイズ 16 に設定する
"fontFace" : "HackGen Console for Powerline",
"fontSize" : 16 // デフォルト値は 12
4-4. カラースキーム
カラースキームは 4-1. 概要 に記載した default.json
で定義されているものであれば colorScheme
にその name
値を書くだけで使えます。
他のカラースキームを使いたい場合は schemes
に追加します。
例: Doracula カラースキームを使う
// 省略
{
"guid": "{afaa79f1-5186-4f66-9c26-57671e5ab2a7}",
"name": "PowerShell Core 7.0.0v-rc.1",
"commandline": "pwsh.exe",
"icon": "C:\\Program Files\\WindowsApps\\Microsoft.PowerShell_7.0.1.0_x64__8wekyb3d8bbwe\\assets\\Powershell_av_colors.ico",
"colorScheme": "Dracula", // 追加
// 省略
"schemes": [
{
"name" : "Dracula",
"background" : "#282A36",
"black" : "#21222C",
"blue" : "#BD93F9",
"brightBlack" : "#6272A4",
"brightBlue" : "#D6ACFF",
"brightCyan" : "#A4FFFF",
"brightGreen" : "#69FF94",
"brightPurple" : "#FF92DF",
"brightRed" : "#FF6E6E",
"brightWhite" : "#FFFFFF",
"brightYellow" : "#FFFFA5",
"cyan" : "#8BE9FD",
"foreground" : "#F8F8F2",
"green" : "#50FA7B",
"purple" : "#FF79C6",
"red" : "#FF5555",
"white" : "#F8F8F2",
"yellow" : "#F1FA8C"
}
],
// 省略
参考: Dracula — A dark theme for Windows Terminal and 84+ apps
4-5. アイコン
アイコンは icon
に画像のパスを設定するだけで好きな画像を使えます。
この記事では以下のように Windows アプリからアイコンを参照しているので、その解説をします。
"icon": "C:\\Program Files\\WindowsApps\\Microsoft.PowerShell_7.0.1.0_x64__8wekyb3d8bbwe\\assets\\Powershell_av_colors.ico"
なお、いくつかの解説記事では ms-appx:///ProfileIcons/
という URI スキームを使っていますが、推奨されないようです。
私も試そうとしましたが、そもそもパスが分からなかったので諦めました。
解説
探し方を簡単に説明します。まず Windows アプリ情報は Get-AppxPackage
コマンドで表示できます。
全部出すと表示が長くなるので Where-Object (where)
で絞り込みするのが良いでしょう。
Get-AppxPackage | where { $_.Name -eq "Microsoft.WindowsTerminal" }
出力:
Name : Microsoft.WindowsTerminal
Publisher : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
Architecture : X64
ResourceId :
Version : 0.7.3451.0
PackageFullName : Microsoft.WindowsTerminal_0.7.3451.0_x64__8wekyb3d8bbwe
InstallLocation : C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_0.7.3451.0_x64__8wekyb3d8bbwe
IsFramework : False
PackageFamilyName : Microsoft.WindowsTerminal_8wekyb3d8bbwe
PublisherId : 8wekyb3d8bbwe
IsResourcePackage : False
IsBundle : False
IsDevelopmentMode : False
NonRemovable : False
Dependencies : {Microsoft.VCLibs.140.00_14.0.27810.0_x64__8wekyb3d8bbwe, Microsoft.VCLibs.140.00.UWPDesktop_14.0.2
7810.0_x64__8wekyb3d8bbwe}
IsPartiallyStaged : False
SignatureKind : Store
Status : Ok
ここの InstallLocation
にアプリのあるパスが書かれています。
なお C:\Program Files\WindowsApps\
配下にはエクスプローラからアクセスすることはできません。(アクセス権限を変更すれば可能ですがセキュリティ的に脆弱になるので非推奨です)
PowerShell でなら中身を検索できるので、以下のようなコマンドで *.ico
や *.png
を探してみると画像ファイルが見つかります。
// *.png を探す
Get-ChildItem -r -Filter "*.png" "C:\Program Files\WindowsApps\Microsoft.PowerShell_7.0.1.0_x64__8wekyb3d8bbwe" | select fullname
// *.ico を探す
Get-ChildItem -r -Filter "*.ico" "C:\Program Files\WindowsApps\Microsoft.PowerShell_7.0.1.0_x64__8wekyb3d8bbwe" | select fullname
出力例: *.ico
FullName
--------
C:\Program Files\WindowsApps\Microsoft.PowerShell_7.0.1.0_x64__8wekyb3d8bbwe\assets\Powershell_av_colors.ico
C:\Program Files\WindowsApps\Microsoft.PowerShell_7.0.1.0_x64__8wekyb3d8bbwe\assets\Powershell_avatar.ico
C:\Program Files\WindowsApps\Microsoft.PowerShell_7.0.1.0_x64__8wekyb3d8bbwe\assets\Powershell_black.ico
C:\Program Files\WindowsApps\Microsoft.PowerShell_7.0.1.0_x64__8wekyb3d8bbwe\assets\ps_black_32x32.ico
Powershell_black.ico
は従来の黒い PowerShell Core アイコンです。お好みでご利用ください。
4-6. 背景
背景は useAcrylic
でアクリル板のような半透過にしたり、背景画像を backgroundImage
で設定出来たりします。
4-7. コピーペースト
コピペは普通にできますが3、いくつかやり方があります。
- コピー
- ウィンドウ内の文字を選択して右クリック
- ウィンドウ内の文字を選択して
Ctrl+Shift+c
-
Ctrl+c
はコマンドの中断 (正確には SIGINT) の送信に使われているため
-
- ペースト
- 何も選択していない状態でウィンドウ内を右クリック
Ctrl+v
Ctrl+Shift+v
Shift+Insert
4-8. ブラウン管風の画面にする
Windows Terminal v0.8.10091.0 からブラウン管風の画面にする機能が追加されました。
参考: Microsoftの無料コマンドラインアプリ「Windows Terminal」がブラウン管ライクな見た目に変身可能に - GIGAZINE
以下の設定をして、アプリケーションを再起動すれば適用されます。
"experimental.retroTerminalEffect": true
※右の方にフォントのゴミ(?)が映っていますが、なおせませんでした。
5. Awesome PowerShell
その他の便利なモジュールや解説はこちらを参照してください。
janikvonrotz/awesome-powershell: A curated list of delightful PowerShell modules and resources
おわり
-
PowerShell Core v6 の場合は Windows Terminal が自動的に認識して設定に追加してくれるようです。 ↩
-
正確には「PCごとのアプリケーション設定フォルダ」ですが、こっちの方が分かりやすいので。 ↩
-
Editing Windows Terminal JSON Settings にはコピペ用のキーバインドを設定してね、と書かれていますが現在は設定不要でした。 ↩