Windows Terminal (PowerShell) + starship でイイ感じのTerminal 環境をつくりたい


はじめに

Windows Terminal って何?

 ― PowerShell や WSL 向けに最適化されたオープンソースの MicroSoft 製ターミナルです。

starship って何?

 ― 簡単に、イイ感じに、カスタマイズ可能なプロンプト。Rust 製でとても高速です。

 
2020年5月、正式版である Windows Terminal 1.0 がリリースされたので、Windows Terminal のインストールから始めてイイ感じの Terminal 環境をつくるまでための備忘録を残しておきます。
starship 導入の Before After はこんな感じです。

目次

  1. Nerd Font のインストール
  2. Windows Terminal のインストール
  3. Windows Terminal の設定
  4. starship のインストール
  5. starship の設定

1. Nerd Font のインストール

starship は Nerd Font を利用してリッチなターミナル表記を実現しています。
Nerd Font とは nerdfonts.com にあるような多様なアイコン等のグリフを含んだフォントです。

Nerd Font のインストール

starship の公式インストールガイドにリンクがある Fira Code Nerd Font もしくはその他お好みの Nerd Font をインストールします。
今回は Nerd Fonts 追加版も公開されているプログラミングフォント「白源 (はくげん/HackGen)」にしました。
参考:【文字幅 半角3:全角5 も追加】Ricty を神フォントだと崇める僕が、フリーライセンスのプログラミングフォント「白源」を作った話

2. Windows Terminal のインストール

Microsoft Store からインストールする方法と Windows向けのCLIなインストーラである scoop でインストールする方法があります。
今回はインストール作業を Terminal で完結させたいので scoop を利用してインストールします。
(インストール要件はPowerShell 5以上 かつ .NET Framework 4.5以上です。 )

scoop のインストール

scoop公式の記載に従ってインストールします。
PowerShellを管理者権限で起動して下記のコマンドを入力します。

powershell
PS C:\Users\muimui> Set-ExecutionPolicy RemoteSigned -scope CurrentUser
PS C:\Users\muimui> Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

デフォルトの実行ポリシーでは権限エラーが発生するので、Set-ExecutionPolicyで実行ポリシーを変更してから scoop をインストールしています。

Windows Terminal のインストール

早速、scoop を利用して Windows Terminal をインストールします。

powershell
PS C:\Users\muimui> scoop bucket add extras
PS C:\Users\muimui> scoop install windows-terminal 

Windows Terminal は scoop の標準パッケージに含まれていないため、scoop bucket add extrasで extra パッケージを追加しています。これだけで Windows Terminal のインストールは完了です。

3. Windows Terminal の設定

Windows Terminal を起動したら、Ctrl + ,で設定ファイルを開きます。
この設定ファイルsetting.jsonに設定項目を記載していきます。

defaultsでデフォルトの設定値、listでアプリごとに個別の設定ができます。
今回はdefaultsのフォント、背景の透過率を変更してみます。
フォントには先程用意した Nerd Font を指定します。

settings.json
    :
  (中略)
    :

    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
            "fontFace": "HackGenNerd Console",
            "fontSize": 11,
            "useAcrylic": true,
            "acrylicOpacity": 0.50
        },
        "list":
        [
    :
  (中略)
    :

4. starship のインストール

starship のインストール

Windows Terminal と同様、scoop を利用して簡単にインストールできます。

powershell
PS C:\Users\muimui> scoop install starship

PowerShell に 初期化スクリプトを追記

PowerShell に Starship を適用するため、PowerShell のプロファイルに Starship の初期化スクリプトを追記します。
下記のコマンドでプロファイル(Microsoft.PowerShell_profile.ps1)の場所を確認。

powershell
PS C:\Users\muimui> $PROFILE

プロファイルのパスが表示されます。これはあくまでこのパスが存在すれば読み込まれるという設定値です。
プロファイルが既に作成されているかどうかはtest-pathコマンドで確認できます。

powershell
PS C:\Users\muimui> test-path $PROFILE

作成されていれば True、いなければ False が返ってくるので、
プロファイルが存在しない場合は下記のコマンドで作成します。

powershell
PS C:\Users\muimui> new-item -path $PROFILE -itemtype file -force

作成した or 既に存在している Microsoft.PowerShell_profile.ps1 に下記の初期化処理を追記します。
プロファイルの文字コードはBOM付き(BOM付きUTF-8など)なので、メモ帳で編集保存すれば問題ありません。

Microsoft.PowerShell_profile.ps1
Invoke-Expression (&starship init powershell)

これで starship のインストールも完了です。
Windows Terminal を再起動すれば powershell に starship が反映されているはずです。

5. starshipの設定

デフォルトで既にプロンプトの表示が変更されていたり、カレントディレクトリの表示が変更されていたりして既にだいぶイイ感じになっていますが、starship ではこれらを含め更にカスタマイズすることができます。
カスタマイズの設定は~/.config/starship.tomlを作成して記載していきます。

冒頭に挙げた After 画像は試しに下記の2つを設定したものです。

  1. コマンド成功/失敗時のシンボル変更
  2. 現在時刻表示の追加
starship.toml
[character]
disabled = false
success_symbol = "[➜](bold green)"
error_symbol = "[✗](bold red)"

[time]
disabled = false
time_format = "%Y-%m-%d %H:%M:%S"
utc_time_offset = "+9"

まとめ

昔に比べると相当お手軽にターミナル環境を改善できるようになりました。

Starship は v0.45 で設定項目が整理、刷新されているので、古い情報を参照する場合は注意。
公式の設定項目の一覧:https://starship.rs/ja-JP/config/

見ていくと他にもGitやバッテリ残量などの設定項目もあります。
あとはお好みでカスタマイズしてください!