ターミナルを毎日使うエンジニアにとって、見た目と使い勝手は生産性に直結しますよね。
2024年末にリリースされたGhosttyは、HashiCorpの創業者Mitchell Hashimotoが5年以上かけて開発したターミナルエミュレータです。僕は約1年ほど使っていますが、iTerm2から乗り換えて正解だったと感じています。Terraform、Vagrant、Vaultを作った人が「自分が本当に使いたいターミナル」として開発しただけあって、パフォーマンスと設定の柔軟性が突き抜けています。
この記事では、Ghosttyの基本設定から、Catppuccinテーマを使った「かっこかわいい」見た目のカスタマイズ、Quick Terminal、tmux・Starship連携まで解説していきます。
最終的にはこんな感じの環境が作れます。

左側でNeovimを開いて、右側にneofetchとシステムモニターを表示しています。tmuxのステータスバーとStarshipのプロンプトもCatppuccinテーマで統一されているので、全体的に統一感のある見た目になっていますね。
Ghosttyとは
Ghosttyは、ネイティブのハードウェアアクセラレーションを活用した高速ターミナルです。主な特徴はこちら。
- ネイティブUI: macOS版はSwift/Objective-Cで書かれたネイティブアプリ
- GPU描画: Metal(macOS)やOpenGL/Vulkan(Linux)を使った高速レンダリング
- 合字対応: プログラミングフォントの合字をネイティブサポート
- 背景画像・シェーダー: カスタム背景やシェーダーエフェクト
- Quick Terminal: グローバルホットキーで呼び出せるドロップダウンターミナル
- ゼロ設定: デフォルトでもすぐ使える合理的な初期設定
インストール
Homebrew
brew install --cask ghostty
公式サイトからダウンロード
ghostty.orgからdmgファイルをダウンロードしてインストールできます。
基本設定
設定ファイルは ~/.config/ghostty/config に置きます。ディレクトリがなければ作成しましょう。
mkdir -p ~/.config/ghostty
touch ~/.config/ghostty/config
設定はシンプルな key = value 形式です。コメントは # で始めます。
フォント設定
プログラミングに適したNerd Fontを設定します。個人的にはJetBrains Mono Nerd Fontがおすすめです。
# Nerd Fontsをインストール
brew install --cask font-jetbrains-mono-nerd-font
# ~/.config/ghostty/config
font-family = "JetBrainsMonoNL Nerd Font"
font-family = "Hiragino Kaku Gothic ProN"
font-size = 16
font-familyを複数指定すると、フォールバックとして使われます。日本語表示のためにヒラギノを追加しておくと安心ですね。
合字の制御
プログラミングフォントの合字(!=が≠になるなど)が好みでない場合は無効化できます。
font-feature = -calt, -liga, -dlig
-calt: 文脈依存の代替文字を無効化-liga: 標準合字を無効化-dlig: 任意合字を無効化
Catppuccinテーマの設定
Catppuccinは、パステルカラーベースのカラースキームです。目に優しく、長時間の作業でも疲れにくいんですよね。
Ghosttyには全Catppuccinフレーバーが組み込みテーマとして用意されているので、手動でダウンロードする必要はありません。
| フレーバー | 特徴 |
|---|---|
| Latte | ライトテーマ |
| Frappe | やや明るめのダーク |
| Macchiato | 中間のダーク |
| Mocha | 最もダークなテーマ |
テーマの適用
# ~/.config/ghostty/config
theme = catppuccin-frappe
カーソルカラーのカスタマイズ
デフォルトのカーソル色を変更して、さらに目立たせることもできます。
cursor-style = block
cursor-color = #9adee8
cursor-styleは block、bar、underline から選択できます。
背景画像の設定
Ghosttyは背景画像をサポートしています。お気に入りの画像を設定すると、ターミナルの雰囲気がガラッと変わりますよ。
background-image = /Users/your-username/Pictures/terminal-wallpaper.jpg
background-image-opacity = 0.2
background-image-opacityは0.0〜1.0の範囲で指定します。0.1〜0.3くらいが文字の可読性を保ちながら雰囲気を出せるのでおすすめです。
対応フォーマット
- JPEG
- PNG
- GIF(アニメーション非対応)
- BMP
- WebP
Quick Terminal
Quick Terminalは、グローバルホットキーで画面上部からスライドダウンするターミナルです。iTerm2のHotkey Windowに相当する機能ですね。
quick-terminal-position = "top"
quick-terminal-animation-duration = 0.15
グローバルホットキーの設定
keybind = global:ctrl+cmd+u=toggle_visibility
global:プレフィックスをつけると、他のアプリがフォーカスしていても呼び出せます。
Quick Terminalの表示位置
quick-terminal-positionで表示位置を変更できます。
top: 画面上部(デフォルト)bottom: 画面下部left: 画面左側right: 画面右側center: 画面中央
カスタムシェーダー
Ghosttyはカスタムシェーダーをサポートしていて、カーソルにエフェクトを追加したり、画面全体にフィルターをかけたりできます。
custom-shader = /Users/your-username/.config/ghostty/shaders/cursor_blaze.glsl
シェーダーファイルはGLSL形式です。カーソル周りにグロー効果を追加するサンプルなどがGitHubで公開されています。
macOS固有の設定
フルスクリーン
macOSのネイティブフルスクリーンを使うか、非ネイティブ(別Spaceに移動しない)を使うか選べます。
fullscreen = true
macos-non-native-fullscreen = true
macos-non-native-fullscreen = trueにすると、フルスクリーン時にスペースを移動せず、現在のデスクトップで全画面になります。
タイトルバーの非表示
画面をスッキリさせたい場合はタイトルバーを非表示にできます。
macos-titlebar-style = hidden
オプションは native、hidden、transparent の3つです。
Option キーを Alt として使う
ターミナルでMeta キーとしてOptionを使いたい場合はこちら。
macos-option-as-alt = true
tmuxやVimでOptionをMetaキーとして使う場合は必須の設定です。
tmux連携
tmuxを使っている場合、Ghosttyと組み合わせることでさらに強力な環境が作れます。
Catppuccin for tmux
tmuxにもCatppuccinテーマを適用しましょう。
# ~/.config/tmux/tmux.conf
set -g @plugin 'catppuccin/tmux#v2.1.3'
set -g @catppuccin_flavor 'mocha'
おすすめのtmux設定
# プレフィックスキーをCtrl+sに変更(Ctrl+bより押しやすい)
set-option -g prefix C-s
unbind-key C-b
bind-key C-s send-prefix
# ステータスバーを上部に表示
set-option -g status-position top
# マウスを有効化
set-option -g mouse on
# True colorサポート
set-option -g default-terminal "tmux-256color"
set-option -ga terminal-overrides ",*256col*:Tc"
tmuxプラグイン
tmux plugin managerを使うと便利なプラグインを簡単にインストールできます。
# おすすめプラグイン
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect' # セッション復元
set -g @plugin 'tmux-plugins/tmux-continuum' # 自動保存
set -g @plugin 'MunifTanjim/tmux-mode-indicator' # モード表示
Starship連携
Starshipは、クロスプラットフォームのシェルプロンプトです。Rustで書かれていて非常に高速なんですよね。
Starshipのインストール
brew install starship
# .zshrcに追加
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
Catppuccin for Starship
StarshipにもCatppuccinテーマを適用して統一感を出しましょう。
# ~/.config/starship.toml
palette = "catppuccin_mocha"
[palettes.catppuccin_mocha]
rosewater = "#f5e0dc"
flamingo = "#f2cdcd"
pink = "#f5c2e7"
mauve = "#cba6f7"
red = "#f38ba8"
maroon = "#eba0ac"
peach = "#fab387"
yellow = "#f9e2af"
green = "#a6e3a1"
teal = "#94e2d5"
sky = "#89dceb"
sapphire = "#74c7ec"
blue = "#89b4fa"
lavender = "#b4befe"
text = "#cdd6f4"
subtext1 = "#bac2de"
subtext0 = "#a6adc8"
overlay2 = "#9399b2"
overlay1 = "#7f849c"
overlay0 = "#6c7086"
surface2 = "#585b70"
surface1 = "#45475a"
surface0 = "#313244"
base = "#1e1e2e"
mantle = "#181825"
crust = "#11111b"
プロンプトのカスタマイズ
format = """
$os\
$directory\
$git_branch\
$git_status\
$nodejs\
$rust\
$golang\
$python\
$cmd_duration\
$line_break\
$character"""
[os]
disabled = false
format = "[$symbol]($style) "
style = "fg:text"
[os.symbols]
Macos = ""
[directory]
format = "[$path]($style)[$read_only]($read_only_style) "
style = "fg:blue"
truncation_length = 3
[git_branch]
format = "[$symbol$branch(:$remote_branch)]($style) "
symbol = " "
style = "fg:mauve"
[git_status]
format = '([$all_status$ahead_behind]($style) )'
style = "fg:peach"
[character]
success_symbol = "[∙](fg:red)[∙](fg:sky)[∙](fg:green)"
error_symbol = "[∙](fg:red)[∙](fg:red)[∙](fg:red)"
これで、Ghostty + tmux + Starship がすべてCatppuccinテーマで統一された環境が完成します。
設定例(フル)
ここまでの設定をまとめた完全な設定例です。
# ~/.config/ghostty/config
# テーマ
theme = catppuccin-frappe
# フォント
font-family = "JetBrainsMonoNL Nerd Font"
font-family = "Hiragino Kaku Gothic ProN"
font-feature = -calt, -liga, -dlig
font-size = 16
# カーソル
cursor-style = block
cursor-color = #9adee8
# 背景
background-image = /path/to/your/wallpaper.jpg
background-image-opacity = 0.2
# macOS設定
fullscreen = true
macos-non-native-fullscreen = true
macos-titlebar-style = hidden
macos-option-as-alt = true
# Quick Terminal
quick-terminal-position = "top"
quick-terminal-animation-duration = 0.15
# キーバインド
keybind = global:ctrl+cmd+u=toggle_visibility
# シェーダー(オプション)
# custom-shader = /path/to/your/shader.glsl
iTerm2からの移行
iTerm2から移行する場合の主な違いはこちらです。
| 機能 | iTerm2 | Ghostty |
|---|---|---|
| 設定UI | GUIで設定 | テキストファイル |
| プロファイル | 複数プロファイル対応 | シンプルな単一設定 |
| Hotkey Window | あり | Quick Terminal |
| 分割 | ネイティブ対応 | tmuxとの連携推奨 |
| 背景画像 | あり | あり |
| シェーダー | なし | あり |
iTerm2の分割機能をよく使う場合は、tmuxとの併用がおすすめです。Ghostty自体の分割機能もありますが、tmuxの方が柔軟性が高いですね。
パフォーマンス比較
Mitchell Hashimoto自身がベンチマークを公開していて、vtebench等のベンチマークでiTerm2やAlacrittyより高速という結果が出ています。
実際に1年使ってみた体感としても、iTerm2よりサクサク動きます。特にtmuxでペイン分割しているときの表示速度が明らかに早いんですよね。大量のログ出力やスクロール時も引っかかりがなくて快適です。
注意点:メモリ使用量
ただ、稀にメモリを多く使用してしまうことがあります。長時間使っていると数GBまで膨らんでいることがあり、そのときはGhosttyを再起動しています。僕のマシンのメモリが24GBで足りていない可能性もありますが、メモリ使用量は気にしておいたほうがいいかもしれません。
トラブルシューティング
フォントが表示されない
Nerd Fontが正しくインストールされているか確認しましょう。
# インストール済みのNerd Fontを確認
fc-list | grep -i nerd
Quick Terminalが動かない
グローバルホットキーを使うには、システム環境設定でアクセシビリティの許可が必要です。
システム設定 → プライバシーとセキュリティ → アクセシビリティ でGhosttyを許可してください。
背景画像が表示されない
パスが正しいか確認しましょう。~は展開されないので、フルパスで指定する必要があります。
# ❌ 動かない
background-image = ~/Pictures/wallpaper.jpg
# ✅ 動く
background-image = /Users/username/Pictures/wallpaper.jpg
ターミナル環境をさらに快適にするアイテム
ソフトウェア面の設定が完了したら、ハードウェアにも投資してみると作業効率がさらに上がります。
高品質キーボード
ターミナルでの作業はキーボード入力が中心なので、打鍵感の良いキーボードを使うとモチベーションが上がります。特にHHKBは静電容量無接点方式で、長時間のタイピングでも疲れにくいんですよね。コンパクトなサイズでデスクスペースも節約できます。
4Kモニター
ターミナルで複数ペインを開く場合、解像度の高いモニターがあると格段に作業しやすくなります。特にtmuxで分割表示する際、4K解像度なら文字がつぶれずに読みやすいです。Dell U2723QEはIPS Blackパネル採用で、コントラストが高くテキストがくっきり表示されます。
まとめ
Ghosttyは、HashiCorpの創業者が5年以上かけて作った「本気のターミナル」です。
- ネイティブパフォーマンス: Metal/Vulkanを使った高速描画
- 設定の柔軟性: テキストベースで管理しやすい
- Quick Terminal: グローバルホットキーでどこからでも呼び出し
- 背景画像・シェーダー: ビジュアルのカスタマイズが自由自在
Catppuccinテーマを使えば、Ghostty + tmux + Starship を統一感のある「かっこかわいい」環境に仕上げられます。
iTerm2からの移行も難しくないですし、一度設定してしまえばdotfilesとしてGitで管理できるのも大きなメリットですね。
ターミナル環境を見直すタイミングなら、Ghosttyを試してみる価値はあると思います。