1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Starshipの色がTerminal.appで正しく表示されない問題の解決方法

Last updated at Posted at 2025-07-26

starshipとは

starshipって知っていますか?ちなみに私は知りませんでした。公式サイトによると以下の通りです。

シェル用の最小限の、非常に高速で、無限にカスタマイズ可能なプロンプトです!
Starship公式サイトより引用

正直未だに理解しきれてはいませんが、Rustで作成されているターミナルの見た目をかっこよくしてくれるやつ。と思っています。

技術カンファレンスやセッションでのデモの際に、ターミナルにカラフルなgitのブランチ名やPythonのバージョンなどが出ているのを見て、これがあるだけで技術力がアップするのでは!?と憧れていました。

どうやるんだろう...と思いつつも、手を出していませんでした。今回意を決してインストールしましたが、少し詰まった部分があったので備忘録的に残しておきます。

今回は以下の画像のようなターミナル表示を目指しました。
image.png
starshipには様々なプリセット(自分でカスタマイズせずにいい感じの見た目にしてくれるテンプレートのようなもの)が用意されており、上記の画像はgruvbox-rainbowというものです。

問題の概要

  • インストールの手順は公式サイトのGuideが丁寧で、特に問題なく完了できました。

ではどこで詰まったのかというと...

StarshipでGruvboxテーマを使用している際、VS Codeの統合ターミナルでは色が正しく表示されるのに、macOSのTerminal.appでは文字色が背景色と同じになってしまい、テキストが見えなくなる問題が発生しました。

  • VSCode
    vsCode.png

  • Terminal
    terminal.png

原因

この問題の根本原因は色深度の違いでした:

  • Starshipの設定: 24bit RGB色を使用
  • Terminal.app: 256色(8bit)のみサポート
  • VS Code統合ターミナル: 24bit RGB色をフルサポート
# 問題のある設定例
[palettes.gruvbox_dark]
color_fg0 = '#fbf1c7'  # 24bit RGB → Terminal.appで正しく変換されない
color_aqua = '#689d6a'

解決方法

1. 色深度の確認

まず、ターミナルの色サポート状況を確認します:

echo $TERM
tput colors

結果例:

xterm-256color
256

この結果の意味:

  • xterm-256color: ターミナルが256色モードで動作していることを示す
  • 256: 実際にサポートしている色数(24bit RGB = 1677万色ではなく、256色のみ)

2. パレット設定を256色対応に変更

Starshipの設定ファイル(~/.config/starship.toml)で、RGBカラーコードを256色番号に変更します:

変更前(24bit RGB設定)

[palettes.gruvbox_dark]
color_fg0 = '#fbf1c7'  # 16進数RGB(1677万色中の1色を指定)
color_aqua = '#689d6a' # 具体的なRGB値での色指定
# ... 他の色も同様

変更後(256色対応設定)

[palettes.gruvbox_dark]
color_fg0 = '230'      # 256色パレットの230番目の色
color_aqua = '72'      # 256色パレットの72番目の色
# ... 他の色も256色番号で指定

設定の意味:

  • 24bit RGB (#fbf1c7): 1677万色から正確な色を指定。Terminal.appでは近似色に変換される
  • 256色番号 (230): 256色パレット内の特定の色を直接指定。近い色は生成AIに聞くのが早いと思います

3. 設定を反映

ターミナルで以下のコマンドを実行

source ~/.zshrc

色の指定について

tomlファイルを開くと色々設定が書かれていますが、以下のプロパティ名に対し文字色と背景色の指定がされています。

用語説明:

  • fg: foreground(前景色、文字色)
  • bg: background(背景色)

この時に指定されている色の値が、[palettes.gruvbox_dark]のブロックに記述されているため、以下で置き換えるとターミナルでも綺麗に表示されます。

[palettes.gruvbox_dark]
color_fg0 = '230'      # #fbf1c7 → 明るいクリーム色
color_bg1 = '237'      # #3c3836 → 暗いグレー
color_bg3 = '241'      # #665c54 → グレー
color_blue = '66'      # #458588 → 青
color_aqua = '72'      # #689d6a → シアン/緑
color_green = '106'    # #98971a → 緑
color_orange = '208'   # #d65d0e → オレンジ
color_purple = '132'   # #b16286 → 紫
color_red = '124'      # #cc241d → 赤
color_yellow = '214'   # #d79921 → 黄色

256色番号の調べ方

RGB色から256色番号への変換は以下のサイトが便利です:

tomlファイル書き換え後

  • ターミナルも見やすくなった!
    after_terminal.png

  • VSCodeで色の変化を確認すると、ほとんど同じ!(上が元のRGB指定、下が設定変更後)
    after_VSCode.png

まとめ

  • 原因: Terminal.appの256色制限とStarshipの24bit RGB色設定の不整合
  • 解決策: パレット設定を256色番号に変更
  • メリット: VS CodeとTerminal.app両方で一貫した表示が可能

この設定変更により、どちらの環境でもかっこいいターミナルが実現できました!

あとは、技術セッションで発表できる技術力を身につけるだけです...

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?