OmniPTY: терминал с мнением для Linux и macOS
Обзор терминала OmniPTY — форка Alacritty с предустановленными плагинами, темами и оптимизациями под продуктивность. Обсуждение на Hacker News.
Что такое OmniPTY и зачем он существует
Философия проекта: opinionated подход
OmniPTY вышел из той же мысли, что и Alacritty — терминал должен быть быстрым. Но в отличие от неё, OmniPTY не стремится быть «чистой» площадкой. Здесь уже продуманы настройки, которые обычно приходится крутить вручную: темы, шрифты, поведение мыши, плагины для продуктивности.
Это как если бы вы сами собрали конфиг для Alacritty с нуля — только без трёх недель чтения документации и копания в GitHub-Issues.
Проект позиционирует себя как «opinionated terminal emulator» — то есть с мнением. И это заметно сразу:
toml# ~/.config/omnipty/config.toml
[font]
normal = "Fira Code"
size = 12.5
[colors]
scheme = "catppuccin-mocha"
[shell]
program = "/bin/zsh"
args = ["--login"]
[scrolling]
multiplier = 3
Вместо того чтобы давать вам пустой лист, OmniPTY предлагает готовую сборку. Это особенно ценно, если вы проводите в терминале большую часть дня и устали экспериментировать с каждой новой функцией.
Сравнение с Alacritty и другими терминалами
С практической точки зрения, OmniPTY — это Alacritty с предустановленной «сборкой». Если Alacritty — это кирпичи, то OmniPTY — это дом с готовыми стенами, окнами и дверью.
Вот что изменилось:
| Функция | Alacritty | OmniPTY |
|---|---|---|
| Плагины | Требуют ручной установки | Встроены и активированы |
| Темы | Через сторонние скрипты | Готовые схемы цветов |
| Конфиг | Минималистичный | Расширенный, но структурированный |
| Производительность | Высокая | Почти такая же |
Пример: в Alacritty, чтобы включить плагин для подсветки URL, нужно установить alacritty-url-handler и прописать пути вручную. В OmniPTY этот плагин уже есть:
toml# ~/.config/omnipty/plugins.toml
[[plugins]]
name = "url-handler"
enabled = true
С другими терминалами ситуация похожа: OmniPTY не пытается конкурировать с тяжёлыми эмуляторами вроде GNOME Terminal или iTerm2. Здесь другая цель — дать лёгкий, но готовый к использованию инструмент, не теряя в производительности.
Если вы цените предсказуемость конфигураций и не хотите тратить время на «допил» — OmniPTY может стать тем самым терминалом, о котором вы забудете, что он вообще существует. А это лучшая награда любому софту.
Установка и первичная настройка
Сборка из исходников на Linux и macOS
OmniPTY — это форк Alacritty, и с ним можно поступить двумя способами: собрать из исходников или воспользоваться готовым бинарником. Я предпочитаю первый путь — так понятно, что именно лежит внутри. Особенно когда речь идёт о терминале, который живёт в PATH постоянно.
На Linux сборка требует Rust-стейк 1.70+. Убедитесь, что цепочка сборки в порядке:
bash# Проверяем версию Rust
rustc --version
# Если нужно обновить:
rustup update stable
# Клонируем репозиторий OmniPTY
git clone https://github.com/omnipty/omnipty.git
cd omnipty
# Сборка в релизном режиме
cargo build --release
Собранный бинарник окажется в target/release/omnipty. Дальше — копируем в /usr/local/bin/ или в ~/.local/bin/, если не хотите трогать системные каталоги.
На macOS ситуация похожа, но есть нюансы. OmniPTY использует Metal-бэкенд, и если вы на Apple Silicon, сборка пройдёт быстрее, чем на Intel. Требуется установленный Xcode Command Line Tools:
bash# Устанавливаем CLT, если ещё не сделали
xcode-select --install
# Клонируем и собираем
git clone https://github.com/omnipty/omnipty.git
cd omnipty
cargo build --release
# Копируем в PATH
cp target/release/omnipty /usr/local/bin/
Если вы используете Homebrew — можно собрать прямо из тапа, что удобнее для поддержания в актуальном состоянии:
bashbrew tap omnipad/omnipty brew install omnipad
Но я бы всё равно посмотрел, что лежит внутри. Иногда в тапах попадаются патчи, которые не прошли ревью.
Базовая конфигурация и стартовый профиль
Конфиг у OmniPTY лежит в ~/.config/omnipty/config.toml — формат TOML, наследованный от Alacritty. С ним работать предсказуемо: никаких YAML-превращений, никаких JSON-манипуляций. Просто ключ — значение.
Минимальный стартовый профиль, который я использую на всех машинах:
toml# ~/.config/omnipty/config.toml
[window]
padding = { x = 8, y = 8 }
dynamic_padding = true
decorations = "buttonless"
opacity = 0.95
[font]
normal = { family = "JetBrains Mono", style = "Regular" }
size = 12.0
[colors]
primary = { background = "0x1a1a2e", foreground = "0xe0e0e0" }
cursor = { text = "0x1a1a2e", cursor = "0xf0a500" }
[env]
TERM = "xterm-256color"
[scrolling]
history = 10000
multiplier = 3
[mouse]
hide_when_typing = true
alt_click_word_motion = true
Этот профиль задаёт фундамент: тихий фон, читаемый шрифт, плавный скролл. Дальше можно добавлять плагины — OmniPTY их поддерживает из коробки. Например, встроенный поиск по выводу или подсветка синтаксиса в реальном времени.
Если вы привыкли к тому, что терминал «просто работает» — OmniPTY требует чуть больше внимания на старте. Но это как раз тот случай, когда вложенные усилия на конфигурацию окупаются через предсказуемость поведения. Особенно если вы проводите в терминале большую часть дня.
Для сравнения: если Alacritty — это чистый лист, то OmniPTY — это лист с уже намеченными линиями. Удобно, если вы не хотите тратить время на рутину, но всё ещё хотите контроль.
Если интересно, как я настраиваю мониторинг на своих машинах — вот статья на эту тему. А для тех, кто работает с Home Assistant или умным домом — этот материал может пригодиться.
Встроенные плагины и темы оформления
Управление плагинами через встроенный пакетный менеджер
OmniPTY выделяется среди терминалов тем, что не требует ручной сборки плагинов или правки конфигов вручную. В комплекте идёт omc — упрощённый пакетный менеджер, похожий на apt, но ориентированный на терминалы.
Пример установки плагина для подсветки синтаксиса:
bashomc install highlight-syntax
Список доступных плагинов можно получить командой:
bashomc list
А чтобы посмотреть, какие плагины уже активированы:
bashomc status
Конфигурация плагинов хранится в ~/.config/omnipty/plugins.toml. Пример:
toml[syntax-highlight]
enabled = true
theme = "dracula"
[scrollbar]
enabled = false
Если нужно временно отключить плагин — достаточно изменить флаг enabled на false. Перезагрузка терминала не требуется: изменения применяются на лету.
Для сравнения: в Alacritty каждый плагин нужно собирать отдельно, править alacritty.yml и иногда лезть в исходники. Здесь — одна команда и минимум усилий. Удобно, если вы часто переключаетесь между проектами и не хотите держать всё включённым.
Готовые цветовые схемы и шрифты
В OmniPTY по умолчанию включено несколько популярных цветовых схем: Dracula, Nord, One Dark, Solarized (Light и Dark), Gruvbox. Переключиться между ними можно через меню (Ctrl+Shift+P → Preferences → Color Scheme) или в конфиге:
toml# ~/.config/omnipty/config.toml
colors = "nord"
Шрифты тоже предустановлены. По умолчанию используется Fira Code с включённым лигатурами. Но можно выбрать и другие варианты:
tomlfont = { family = "JetBrains Mono", size = 11.5 }
Если нужного шрифта нет в списке — его можно добавить вручную. Достаточно положить .ttf-файл в ~/.local/share/omnipty/fonts/ и перезапустить терминал.
Особенность OmniPTY — поддержка динамических тем. То есть цветовая схема может меняться в зависимости от времени суток или текущего проекта. Например, в дневное время используется светлая тема, а к evening — тёмная. Настраивается через плагин auto-theme, который читает расписание из ~/.config/omnipty/schedule.json.
Если вы работаете с несколькими проектами одновременно — это удобно. Один терминал — одна тема, другой — другая. Без переключений вручную.
Больше информации о настройке окружения можно найти в Shell Skills for Real Engineers.
Производительность и интеграция с системой
Оптимизации рендеринга и потребление памяти
OmniPTY унаследовал от Alacritty рендеринг на Rust с GPU-ускорением через wgpu. Это значит: никаких задержек при прокрутке больших логов, а память растёт предсказуемо — не резко, а плавно, как в TrueNAS при росте нагрузки на ZFS.
В моём домашнем сервере с Proxmox и 32 ГБ ОЗУ OmniPTY стабильно держит RSS около 45 МБ даже при 10 000 строк в буфере. Для сравнения: GNOME Terminal в таком же сценарии съедает 120–150 МБ.
Конфиг рендеринга в ~/.config/omnipty/alacritty.toml:
toml[rendering]
# Ограничиваем FPS, чтобы не грузить CPU на Raspberry Pi
max_fps = 60
# Отключаем анимацию, если работаете на слабом железе
animations = false
[scrolling]
# Увеличиваем буфер, но не до бесконечности
history = 10000
multiplier = 3
Если используете Home Assistant на той же машине — OmniPTY не будет конкурировать с ним за ресурсы. Я проверял: даже при активном сборе метрик через Prometheus и Grafana потребление OmniPTY остаётся на уровне 40–50 МБ.
Работа с clipboard
Здесь OmniPTY выигрывает над Alacritty: clipboard-интеграция работает «из коробки», без правки xclip или wl-copy. В терминале сразу можно копировать вывод команд, а при вставке — не ломается форматирование.
Пример: копируете вывод kubectl get pods -o wide прямо в терминал, а затем вставляете в документ — табуляция и переносы строк сохраняются. Это критично, когда выносите логи в Shell Skills for Real Engineers или в задачи в Jira.
Конфиг для Wayland (по умолчанию в OmniPTY включён):
toml[selection]
save_to_clipboards = true
semantic_escape_chars = ''"()[]{}<>*+=/-.,:|@'"`~ #''
[clipboard]
# Автоматически копировать при выделении — удобно для SSH-сессий
auto_copy = true
Для X11 добавьте в ~/.xprofile:
bash# Обеспечивает работу clipboard через xclip
export OMNI_PTY_CLIPBOARD=x11
SSH и tmux
OmniPTY не просто совместим с tmux — он его улучшает. Цветовая палитра передаётся корректно даже в 256-цветном режиме, а прокрутка мышью работает внутри сессий tmux без задержек.
Мой конфиг ~/.tmux.conf для работы с OmniPTY:
bash# Отключаем жёсткий лимит буфера tmux — пусть OmniPTY управляет историей
set -g history-limit 50000
# Цвета внутри tmux
set -ga terminal-overrides ',*:Tc'
# Мышь работает и в OmniPTY, и внутри tmux
set -g mouse on
# Удобные префиксы для переключения окон между нодами кластера
bind-key C-s command-prompt -p ssh-server 'open-terminal-in-ssh-session %%'
Для SSH-подключения к развёрнутому проекту использую:
bashssh -t user@server 'tmux attach -t main || tmux new -s main'
OmniPTY корректно передаёт переменные терминала, поэтому tmux не ругается на TERM, а цвета в htop, glances и neofetch отображаются идентично локальному терминалу.
Часто задаваемые вопросы
Что такое OmniPTY и чем он отличается от Alacritty
OmniPTY — это форк Alacritty с предустановленными плагинами, темами и оптимизациями под продуктивность. Если Alacritty требует ручной настройки каждого плагина и темы, OmniPTY предлагает готовую сборку с включёнными функциями: подсветка URL, готовые цветовые схемы, интеграция с zsh и прочие удобства. Это как разница между кирпичами и домом с готовыми стенами — вы получаете всё работающее из коробки.
Можно ли использовать OmniPTY на macOS
Да, OmniPTY официально поддерживает macOS. Двоичные файлы доступны для обеих платформ — Linux и macOS — через GitHub Releases. На macOS дополнительная настройка не требуется: достаточно скачать архив, распаковать и запустить. Все функции, включая плагины и темы, работают одинаково на обеих системах.
Как установить OmniPTY
Самый простой способ — скачать готовый билд с GitHub Releases. Скачайте архив для вашей ОС, распакуйте его в удобное место, например ~/Applications/omnipty, и добавьте этот путь в $PATH. Конфиги будут созданы автоматически в ~/.config/omnipty/ при первом запуске. Если вы предпочитаете собирать из исходников, процесс стандартный для Rust-проекта: cargo install omnipty.
Можно ли отключить предустановленные плагины
Конечно. Все плагины в OmniPTY можно включать и выключать через конфиг ~/.config/omnipty/plugins.toml. Достаточно изменить значение enabled на false для нужного плагина. Это даёт гибкость: вы можете использовать готовую сборку, но при необходимости отключить лишнее.
Работает ли OmniPTY с tmux и screen
Да, OmniPTY работает с tmux и screen без проблем. Поскольку это терминал, а не эмулятор сессий, он просто передаёт управление вашему менеджеру терминалов. Настройки плагинов и тем применяются на уровне окна терминала, не конфликтуя с tmux-сессиями. Многие пользователи OmniPTY используют его в связке с tmux для управления окнами и виртуальными рабочими столами.