Powerlevel10kを用いてmacのターミナルをいじってみた

はじめに

このページは琉球大学知能情報アドベントカレンダー Advent Calendar 2023の12月16日の記事です!

macのターミナルはデフォルトの見た目だとこのようになっていて、これはこれで落ち着くのですが、ちょっと物足りない気もします、、、

デフォルトのターミナル

そこで今回は下のようにターミナルの見た目をカッコよくしていきたいと思います。

改造したターミナル

環境

以下の環境を想定します。

  • macOS
  • zsh
  • ターミナル or iTerm2
    • iTerm2を推奨
    • macのターミナルだとコントラストを変更できないため、プロンプトの頭や尻尾の色が若干合わなくなります*1

Icebergの設定

Iceberg は、Vim および NeoVim 向けに、うまくデザインされた目に優しいダークブルーの配色です。 IcebergにはTerminal(iTerm2)版もあるのでそれを設定していきます。

Terminalの場合

公式ページの一番下にあるIceberg for macOSをダウンロードする。

ターミナルを起動し、上のメニューバーからターミナル>設定>プロファイルを開き、左下の◯の中に3つの点があるボタンを押して読み込むを選択します。 そして、先程ダウンロードした設定ファイルをインポートし、デフォルトのプロファイルに設定します。

ターミナルのプロファイル画面

iTerm2の場合

iTerm2用に移植されたこちらを使用します。 以下のコマンドを実行して設定ファイルをダウンロードします。

curl -O https://raw.githubusercontent.com/Arc0re/Iceberg-iTerm2/master/iceberg.itermcolors

iTerm2を起動し、メニューバーからiTerm2>Settings>Profiles>Colorsを開きます。 右下のColor Presetsのボタンを押して、importから先程ダウンロードしたファイルを指定します。

iTerm2のColorsの設定画面

Sheldonの導入

SheldonはRust製のプラグインマネージャーでzshBashに対応しています。

シェルのプラグインマネージャーにこだわりは無いのですが、README曰く高速とのことなので、今回はSheldonを使用していきます。 まず、homebrewでSheldonをインストールします。

brew install sheldon

次に、Sheldonの設定ファイルを生成します。下のコマンドを実行すると~/.config/sheldon/plugins.tomlが自動で生成されます。(~/.configフォルダがない場合は先に作っておいてください)

sheldon init --shell zsh

~/.zshrcに以下を追記します。

eval "$(sheldon source)"

Powerlevel10kのセットアップ

Powerlevel10kzshのテーマで、プロンプトをカスタマイズできます。

フォントの追加

通常のフォントだとアイコン等が文字化けしてしまうため、こちらの手順に従い専用フォントをターミナル(iTerm2)に適用してください。(Nerd Fontsだったらなんでもいいっぽい)

powerlevel10kのインストール

~/.config/sheldon/plugins.toml(Sheldonの設定ファイル)に以下を追記します。

[plugins.powerlevel10k]
github = "romkatv/powerlevel10k"

その後、以下のコマンドで~/.zshrcを読み込み、powerlevel10kをインストールします。

source ~/.zshrc

以下のようなウィザードが表示されるので、設定を行っていきましょう。

powerlevel10kのウィザード画面

  • オススメ設定
    • Prompt Style → (3) Rainbow.
      • プロンプトの背景色を変えたいなら必須
    • Prompt Height → (2) Two lines.
      • プロンプトが長い場合はコマンドがすぐに折り返すので、2行に分けた方がいい
    • Prompt Frame → (1) No frame. or (2) Left.
      • 右側にフレームがあるとコマンドと出力をコピペする際に面倒くさい
    • Prompt Spacing → (2) Sparse.
    • Enable Transient Prompt? → (n) No.
      • Yesを選ぶと現在のプロンプトだけが表示されるので、かっこよさという観点からするとNoを選んだほうが良い

色の変更

~/.p10k.zshを書き換えることで、プロンプトの色等を変更することができます。 使用できる色は0~255までの256種類あり、以下のコマンドで確認することができます。

for i in {0..255}; do print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done

使用できる色を出力させるコマンド

以下は冒頭で紹介した改造したターミナルの図の設定例です。(ウィザードでPrompt Style → (3) Rainbow.以外を選択した場合、設定項目が~/.p10k.zshに存在していないことがあります)

  • git関連
    • 状態で色を変更できるようだったが、面倒くさかったので全て同じ色に設定した。
    • POWERLEVEL9K_VCS_CLEAN_BACKGROUND=3
    • POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=3
    • POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=3
    • POWERLEVEL9K_VCS_CONFLICTED_BACKGROUND=3
    • POWERLEVEL9K_VCS_LOADING_BACKGROUND=3
  • ディレクトリ関連
    • POWERLEVEL9K_DIR_BACKGROUND=37
    • POWERLEVEL9K_DIR_FOREGROUND=254
    • POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_last
    • POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=254
  • アイコン関連
    • POWERLEVEL9K_OS_ICON_FOREGROUND=254
    • POWERLEVEL9K_OS_ICON_BACKGROUND=240
  • condaの仮想環境の表示
    • POWERLEVEL9K_ANACONDA_FOREGROUND=254
    • POWERLEVEL9K_ANACONDA_BACKGROUND=37
  • 時間関連
    • POWERLEVEL9K_TIME_FOREGROUND=254
    • POWERLEVEL9K_TIME_BACKGROUND=240

注意するところ

テキストのコントラストを最小にする

テキストのコントラストが大きいと以下の図のように、プロンプトの頭や尻尾の部分だけ色が若干合いません。

コントラストを上げた場合

そのためコントラストを最小に設定します。しかし、はじめに述べた通りmacのターミナルだとこちらの設定ができません。このためiTerm2での環境構築を推奨しています。*2

iTerm2を起動し、メニューバーからiTerm2>Settings>Profiles>ColorsMinimum Contrastを0に設定してください。

画面を半透明にしない

Minimum Contrastを0に設定していたとしても、画面を半透明にすると以下の図のようにプロンプトの頭や尻尾の部分だけ色が若干合わなくなります。

画面を半透明にした場合

※こちらは調べたところ参考になりそうな情報がありませんでした。

※半透明にしながらプロンプトの色も変わらない方法を知っている方がいれば教えてください!

フォントサイズを変えてみる

フォントサイズによっては以下の図のようにプロンプトの形が崩れることがあります。*3 以下はフォントサイズが12の場合です。

プロンプトの形がずれる
これはフォントサイズを変更すると解消する場合があります。 私の環境ではフォントサイズを13に設定することで形が綺麗になりました。

参考にしたページ