はじめに
以前、Zellijでターミナルは進化するという記事を書いた。ターミナルマルチプレクサのZellijを使えば、レイアウトファイルを定義することで複数ペインの開発環境を一発で起動できるというものだ。
Zellijはセッション管理やキーjjkkバインドなど多くの優位点を持つツールだが、Ghostty 1.3.0以降ではAppleScript APIが利用可能になり、追加ツールなしでもレイアウト展開については同様のことができるようになった。本稿ではその実装を紹介する。
参考
実現するレイアウト(例)
┌─────────┬─────────┐
│ │ claude │
│ yazi ├─────────┤
│ │lazygit │
└─────────┴─────────┘
左ペインにはファイルマネージャーのYazi、右上にはClaude Code、右下にはlazygitを配置する。
GhosttyのAppleScript API
Ghosttyのオブジェクト階層は application → windows → tabs → terminals となっている。
ペインの分割は split コマンドで行い、方向を right / left / down / up で指定する。
set newTerm to split sourceTerm direction rightテキスト送信は input text で行う。
input text "command\n" to termフォーカスの移動は focus で行う。
tell term to focusdev関数の実装
.zshrc に以下の関数を追加する。
function dev() {
osascript << 'EOF'
tell application "Ghostty"
set mainTerm to focused terminal of selected tab of front window
set cmdTerm to split mainTerm direction right
set gitTerm to split cmdTerm direction down
input text "yazi\n" to mainTerm
input text "claude\n" to cmdTerm
input text "lazygit\n" to gitTerm
tell mainTerm to focus
end tell
EOF
}使い方
作業したいディレクトリで dev と打つだけでよい。
dev現在のペインを起点に3分割して各ツールが起動する。

おわりに
ターミナル環境の展開にはいろいろなやり方が出てきているが、Ghosttyを使っているなら追加ツール不要でこれだけシンプルに書くのが一番楽な気がしている。定義の仕方も簡単なので、自分の用途に合わせてペイン構成やコマンドを気軽にカスタマイズできるのも嬉しいポイントだろう。