Одна команда для налаштування macOS Terminal.app — Zsh, Starship, fzf, tmux та інструменти для AI-асистованих робочих процесів.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/dmythro/terminal-setup/main/setup-terminal.sh)" Кожен новий Mac колись коштував мені вечора. Поставити Homebrew, згадати, які zsh-плагіни мені подобались, знайти .zshrc зі старої машини, виявити, що він посилається на три речі, яких уже немає, махнути рукою на tmux — і зупинитися на чомусь трохи гіршому, ніж було.
terminal-setup — це той вечір, записаний однією командою. І, що не менш важливо, другою командою, яка все повертає назад.
Приклади
Команда встановлення вище робить усе сама. Передумали:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/dmythro/terminal-setup/main/reset-terminal.sh)"
Обидва приймають -- -y для запуску без запитань:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/dmythro/terminal-setup/main/setup-terminal.sh)" -- -y
Навіщо це
Насправді я хотів не «гарний термінал», а той самий термінал, відтворюваний на кожній машині, до якої торкаюся. Репозиторії дотфайлів це дають, але вимагають підтримувати репозиторій дотфайлів. Фреймворки теж дають, але приносять менеджер плагінів і плату за час старту.
Бракувало чогось посередині: скрипта, який ставить перевірений набір інструментів, пише конфіги, які я справді переглянув, і який можна перезапустити на вже наполовину налаштованій машині, не влаштувавши безлад.
Попри назву, специфічним для Terminal.app є лише необов’язковий кольоровий профіль. Конфіг zsh, промпт і плагіни працюють в iTerm2, Ghostty, Alacritty, Kitty, WezTerm чи вбудованому терміналі VS Code.
Чим відрізняється
| Підхід | Що отримуєте |
|---|---|
terminal-setup | один скрипт, фіксований набір інструментів, переглянуті конфіги та скрипт відкату |
| oh-my-zsh, prezto | фреймворк плагінів і екосистема, плюс час старту та власна модель оновлень |
| Репозиторій дотфайлів | рівно ваше налаштування — якщо ви його підтримуєте |
| Руками щоразу | щоразу трохи інша машина |
Беріть oh-my-zsh, якщо вам потрібна екосистема плагінів і теми спільноти — це справжня перевага, і тут немає з нею конкуренції. Беріть репозиторій дотфайлів, якщо ваше налаштування достатньо нетипове, щоб курований список лише заважав. Це — для випадку, коли хочеться швидко отримати хорошу типову конфігурацію й повернутися до роботи.
Що всередині
Ставиться завжди
fzf для нечіткого пошуку по історії та файлах, zsh-autosuggestions із fish-подібними підказками, zsh-syntax-highlighting, zsh-completions і Starship для промпта. Спершу Homebrew, якщо його немає.
Згенерований ~/.zshrc додає 50 тисяч рядків історії з дедуплікацією і спільним доступом між сесіями, пошук по історії за префіксом на ↑, звичне для macOS перестрибування слів через Option+стрілки, багаторядкове редагування через Option+Enter, розумні заголовки вкладок і аліаси, якими я справді користуюсь — ll, gs, gl, gd, ...
Необов’язкове, бо змінює поведінку оболонки
tmux із підтримкою миші, поділом панелей, 50 тисячами рядків прокрутки та інтеграцією з буфером обміну. Він автозапускається для кожної сесії — саме та річ, яка має бути свідомим вибором, тож типово вимкнена.
Необов’язкові інструменти розробника
gh, bun, ripgrep, fd, zoxide і delta. Два з них — не просто зручність: саме rg і fd роблять пошук файлів і каталогів у fzf швидким.
Необов’язкові CLI для AI-агентів
OpenCode, Claude Code, Codex, Gemini CLI та Aider — кожен пропонується окремо, а не одним пакетом, бо всіма п’ятьма не користується ніхто. Кожному все одно потрібен власний ключ або вхід.
Допрацьована тема для рідного Terminal.app
Те, від чого проєкт має назву: темний профіль (Dmythro.terminal), який імпортується просто в Terminal.app і стає типовим — шрифт MonaspiceNe Nerd Font у 14 pt, вікно 120×36, заздалегідь увімкнене Use Option as Meta key і true color на macOS 26 Tahoe. Чиста справа смаку — саме тому тема необов’язкова й пропускається в автоматичному режимі.
Нотатки про рішення
Є скрипт відкату — і саме тому скрипт налаштування може бути сміливим. Bootstrap, який не можна скасувати, на машині, якою дорожиш, тестують дуже обережно. Можливість запустити reset-terminal.sh і повернути старий профіль робить розумним просто спробувати.
Неінтерактивний режим свідомо дещо пропускає. -y ставить пакети та інструменти розробника, але не tmux, не Nerd Font і не профіль Terminal.app. Це або змінює поведінку оболонки при кожному запуску, або є справою смаку — увімкнути таке типово в автоматичному режимі означало б сюрприз, а сюрпризи в конфігу оболонки дорого коштують.
Перезапуск безпечний. Скрипт ідемпотентний, тож він же є і шляхом оновлення: запустіть його знову на наявній машині — і він приведе її до потрібного стану, а не допише ще один блок у ваш .zshrc.
Статус
Живий і використовується на моїх власних машинах — так він і тестується. Розрахований на macOS: конфіг оболонки переносний, але інсталятор передбачає Homebrew, а імпорт профілю — Terminal.app.