Catppuccinで作る「かわいい」ターミナル環境|7つのCLIツールをパステルで統一

Mac

Ghostty + tmux + Starship + Neovimが全部パステルカラーで統一されたターミナル画面

Ghostty、tmux、Starship、Neovim。全部がパステルカラーで統一されたターミナル。ピンク、ラベンダー、ミントグリーン。どこを見ても同じトーンの色が並んでいる。

これを実現しているのがCatppuccinというカラーテーマ。一度ハマると抜け出せないパステルの沼を紹介する。

Catppuccin - パステルカラーの統一テーマ

Catppuccinは、目に優しいパステルカラーをベースにしたカラーテーマ。もともとNeovim向けに作られたんだけど、今は400以上のアプリ・ツールに対応する巨大エコシステムに成長している。

用意されているカラーバリエーション(フレーバー)は4つ。

フレーバータイプ背景色雰囲気
Latteライト#eff1f5明るく爽やか
Frappeダーク#303446落ち着いた暗さ
Macchiatoダーク#24273aMochaより少し明るい
Mochaダーク#1e1e2e最も深く、コージー

どのフレーバーを選んでも、パステルカラーのアクセント(ピンク、ラベンダー、スカイブルー、ミントグリーン)は共通。違うのは背景の明るさだけ。個人的にはMochaの深い暗さが好き。

僕のターミナル構成

7つのCLIツールすべてにCatppuccinを入れている。

Ghostty(ターミナルエミュレータ)
├── tmux(セッション管理)
│   ├── Starship(プロンプト)
│   ├── Neovim(エディタ)
│   ├── bat(catの代替)
│   ├── eza(lsの代替)
│   └── fzf(ファジーファインダー)

ここからは、各ツールに「色を足していく」過程を紹介していく。設定を1つ入れるたびに、パステルの世界が広がっていく感じが楽しい。

1. Ghostty - 土台。1行で世界が変わる

まずはターミナルエミュレータ。ここが全体の背景色を決める。

# ~/.config/ghostty/config
theme = catppuccin-mocha

たった1行。これだけでターミナルの背景がMochaの深い暗さに変わり、文字色がパステルカラーになる。Ghosttyには組み込みテーマとして用意されているので、そのまま使える。なおv1.2.0でテーマ名がTitle Caseに変わったので、バージョンによってはCatppuccin Mochaと書く必要がある。

Ghostty入門|HashiCorp創業者が作った次世代ターミナルの設定ガイドMac

Ghosttyにはシェーダー機能もあって、カーソルを動かすとパステルカラーの火花が飛び散るエフェクトも使える。Catppuccinの色味との相性が抜群。

Ghosttyおすすめシェーダー集|花火・CRT・カーソルトレイルでターミナルを彩るMac

最初の1行を書いた瞬間、「あ、もう戻れないな」って思った。黒一色だったターミナルに色が灯る瞬間。

2. Starship - プロンプトにパステルが添えられる

次はプロンプト。ターミナルを開いて最初に目に入る場所。

Starshipはパレット機能でCatppuccinの色を定義して、各モジュールで参照する。

# ~/.config/starship.toml
palette = 'catppuccin_mocha'

[os]
style = "bg:dark fg:crust"

[directory]
style = "bg:sapphire fg:crust"

[git_branch]
style = "bg:lavender"

[character]
success_symbol = "[∙](fg:red)[∙](fg:cyan)[∙](fg:green)"
error_symbol = '[∙](fg:rosewater)[∙](bold fg:pink)[∙](fg:red)'

# パレット定義
[palettes.catppuccin_mocha]
rosewater = "#f6dbd3"
flamingo = "#f6d0d0"
pink = "#F5C2E7"
mauve = "#d9bcfa"
red = "#f485ad"
maroon = "#eeb0bd"
peach = "#fabeab"
yellow = "#f9e1aa"
green = "#bfe7bb"
teal = "#ace7e0"
sky = "#A8E6F2"
sapphire = "#9bd5f2"
blue = "#b0cbfa"
lavender = "#b7bdf8"
text = "#dbe3fa"
subtext1 = "#ccd4eb"
subtext0 = "#c0c7dd"
overlay2 = "#b0b6cd"
overlay1 = "#9fa1ba"
overlay0 = "#9192a6"
surface2 = "#7e8092"
surface1 = "#686a82"
surface0 = "#52546a"
base = "#313142"
mantle = "#292938"
crust = "#555555"
dark = "#52546a"

パレット機能が優秀で、fg:pinkbg:sapphireのように色名をそのまま使える。

Starshipプロンプト: ディレクトリ、gitブランチ、Nodeバージョン、時刻がパステルカラーで表示される

crustの値を公式の#11111bから#555555に変更しているのは、背景とのコントラストを少し上げたかったから。公式の色そのままだと暗い背景で文字が溶ける。

筆者

ターミナルを開くたびにパステルカラーのプロンプトが迎えてくれる。ディレクトリはサファイアブルー、gitブランチはラベンダー。毎回ちょっと嬉しい。

3. tmux - ステータスバーが馴染む

tmuxはプラグインで導入する。

# ~/.config/tmux/tmux.conf
set -g @plugin 'catppuccin/tmux#v2.1.3'
set -g @catppuccin_flavor "mocha"

# 背景を透過にして、Ghosttyの背景を活かす
set -g @catppuccin_window_status_style "none"
set -g @catppuccin_status_background "none"

# ウィンドウ番号の色
set -g @catppuccin_window_current_number_color "#{@thm_blue}"
set -g @catppuccin_window_number_color "#{@thm_overlay_0}"

# ペイン境界線(モードで色が変わる)
set -g @catppuccin_pane_border_style "fg=#{@thm_surface_0}"
set -g @catppuccin_pane_active_border_style "##{?pane_in_mode,fg=#{@thm_overlay_0},##{?pane_synchronized,fg=#{@thm_mauve},fg=#{@thm_overlay_0}}}}"

ポイントはstatus_background"none"にすること。Ghosttyの背景色がそのまま透けるので、ステータスバーだけ色が浮く問題がなくなる。

実際のステータスバーはこんな感じ。左にセッション情報、中央にウィンドウタブ、右にシステム情報が並ぶ。

tmuxステータスバー左: セッション情報、tmuxバージョン、リポジトリ名、gitブランチ

tmuxステータスバー中央: ウィンドウタブ一覧

tmuxステータスバー右: CPU、Wi-Fi、バッテリー、時刻

透過にした瞬間、tmuxの存在感が「主張」から「添え物」に変わる。画面の統一感が一気に上がる。

4. Neovim - エディタもパステルに

Neovimはlazy.nvimでプラグインとして導入する。

-- ~/.config/nvim/lua/plugins/colorscheme.lua
return {
  "catppuccin/nvim",
  name = "catppuccin",
  priority = 1000,
  lazy = false,
  opts = {
    flavour = "mocha",
    transparent_background = true,
    term_colors = true,
    styles = {
      comments = { "italic" },
      conditionals = { "italic" },
    },
    integrations = {
      cmp = true,
      gitsigns = true,
      nvimtree = true,
      treesitter = true,
      notify = true,
      mini = true,
      flash = true,
      indent_blankline = { enabled = true },
      native_lsp = {
        enabled = true,
        underlines = {
          errors = { "undercurl" },
          hints = { "undercurl" },
          warnings = { "undercurl" },
          information = { "undercurl" },
        },
      },
      telescope = { enabled = true },
      which_key = true,
    },
    custom_highlights = function(colors)
      return {
        Visual = { bg = "#4F5168" },
        Comment = { fg = "#666775", style = { "italic" } },
        CursorLineNr = { fg = "#ffb7ff", style = { "bold" } },
        CmpBorder = { fg = "#6ADFEE" },
        Pmenu = { bg = "#2a2a2a", fg = "#ffffff" },
        PmenuSel = { bg = "#4F5168", fg = "#ffffff" },
        FloatBorder = { fg = "#6ADFEE" },
      }
    end,
  },
  config = function(_, opts)
    require("catppuccin").setup(opts)
    vim.cmd.colorscheme("catppuccin")
  end,
}

大事なのはtransparent_background = true。これでGhosttyの背景がNeovimの中でもそのまま表示される。背景画像やシェーダーを使っている場合、これがないとNeovimだけ黒背景になって浮く。

integrationsでは、UIを持つプラグイン(telescope、gitsigns、cmpなど)をすべてCatppuccinに対応させている。ここを忘れると一部だけ色が違って気持ち悪い。

Neovimでファイルエクスプローラとtmux.confを開いた画面。シンタックスハイライト、ステータスバー、タブラインすべてがCatppuccinカラー

カーソル行の番号がピンク(#ffb7ff)で光るのが地味に気に入っている。コード書いてるだけなのに、なんかおしゃれ。

5. bat - catするだけでパステル

batはテーマファイルを配置して1行書くだけ。

# ~/.config/bat/config
--theme="Catppuccin Mocha"

テーマファイル(.tmTheme形式)は公式リポジトリからダウンロードして~/.config/bat/themes/に配置。bat cache --buildを忘れずに。

batでファイルを表示した画面。シンタックスハイライトがパステルカラーで表示される

catの代わりにbatを叩くだけで、ファイルの中身がパステルカラーのシンタックスハイライトで表示される。ログを見るのすら楽しい。

6. eza - lsがカラフルになる

ezaはファイルタイプやパーミッションごとに色を細かく設定できる。

# ~/.config/eza/theme.yml
colourful: true

filekinds:
  normal: {foreground: "#cdd6f4"}
  directory: {foreground: "#94e2d5"}
  symlink: {foreground: "#f5c2e7"}
  pipe: {foreground: "#a6adc8"}
  block_device: {foreground: "#fab387"}
  char_device: {foreground: "#f9e2af"}
  socket: {foreground: "#cba6f7"}
  special: {foreground: "#f38ba8"}
  executable: {foreground: "#a6e3a1"}
  mount_point: {foreground: "#89b4fa"}

perms:
  user_read: {foreground: "#a6adc8"}
  user_write: {foreground: "#f38ba8"}
  user_execute_file: {foreground: "#a6e3a1"}

ezaでdotfilesディレクトリを表示した画面。ディレクトリはティール、ファイル種別ごとにパステルカラーで色分けされている

lsを打つだけでディレクトリはティール、実行ファイルはグリーン、シンボリックリンクはピンク。ファイル一覧がカラフルに染まる。

7. fzf - 枠線までパステル

fzfはシェルの環境変数でCatppuccinカラーを指定する。

# ~/.config/fish/config.fish
set -x FZF_DEFAULT_OPTS '
  --color=spinner:#f5e0dc,hl:#f38ba8
  --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc
  --color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8
  --color=bg+:#45475a
  --color=border:#313244,label:#cdd6f4
  --color=preview-border:#9999cc,preview-label:#ccccff
  --color=list-border:#bfe7bb,list-label:#99cc99
  --color=input-border:#f6cce7,input-label:#ffcccc
'

tmuxのポップアップと組み合わせると、prefix + fでパステルカラーのfzfがふわっと出てくる。

tmuxポップアップでfzfを起動した画面。枠線やハイライトがすべてCatppuccinカラー

セクションごとに枠線の色が違うのがいい。プレビュー枠はラベンダー系、リスト枠はミントグリーン、入力枠はピンク。fzfが可愛くなる日が来るとは思わなかった。

統一のコツ

transparent_backgroundで背景を統一する

Neovim、tmuxなど背景色を持つツールはtransparent_backgroundを有効にする。こうするとGhosttyの背景色が全体で透過されるので、ツール間で背景色が分断されない。これが統一感の要。

フレーバーは1つに揃える

おすすめはMocha。対応ツールが最も多く、ネット上の設定例もMochaが圧倒的。困ったときに検索しやすいのは大きい。

実は最初、GhosttyがFrappe、batがMacchiato、他がMochaで3種類混在してた。並べないと気づかないけど、揃えたら「あ、全然違ったわ」ってなる。

筆者

Catppuccin公式のポートを使う

各ツールの設定は、なるべくCatppuccin公式のGitHubで公開されているポートを使うといい。自分でHEX値を拾って設定すると、微妙に色がズレる。400以上のポートが用意されているので、大抵のツールはカバーされている。

まとめ

毎日8時間以上向き合う画面が、好きな色で統一されている。それだけのことなんだけど、思った以上に気持ちいい。

Catppuccinの強みはエコシステムの広さ。新しいツールを導入したら、まずCatppuccinのGitHubを覗く。大抵ポートがある。この安心感が、パステルの沼から抜け出せなくなる理由なのかもしれない。

Thanks for reading!
CatppuccinターミナルGhosttyパステルカラーdotfiles