Об этом проекте

mTerm — это нативный эмулятор терминала для macOS, написанный на Swift, использующий AppKit для окна и рендерер Metal для области терминала. Он позиционирует себя как альтернатива iTerm2 для разработчиков, которым нужен нативный для Mac интерфейс, рендеринг класса GPU и намеренно небольшой набор функций вместо обширной панели настроек. Он явно избегает функций ИИ, облачных аккаунтов и переосмысления оболочки. Рендеринг и эмуляция терминала Область терминала рендерится через Metal с атласом глифов, выровненным по пикселям, что сохраняет чёткость текста при любых размерах без размытия из-за фильтрации GPU. Жирный и курсив используют реальные начертания шрифта, а не синтезированные наклоны, с одинаковой шириной знаков, чтобы колонки оставались выровненными. Поддерживаются атрибуты подчёркивания, приглушённости и инверсии, включая коды их отключения. Изменение размера перестраивает буфер: перенесённые строки объединяются и заново разбиваются по новой ширине, а при перетаскивании появляется индикатор размера сетки. Совместимость нацелена на xterm-256color для таких инструментов, как vim, neovim, htop, fzf, less и git-пейджеры. Поддерживаются 24-битный true color, альтернативный экран, области прокрутки (DECSTBM), рисование линий DEC и синхронизированный вывод (DEC 2026). Отчёты о мыши охватывают SGR (1006) и устаревшие кодировки для клика, перетаскивания, движения и колеса, при этом ⇧ удерживается для выделения. Включены вставка в скобках, события фокуса и отчёты о позиции устройства/курсора. Восточноазиатские и полноширинные символы занимают две колонки, а комбинируемые знаки объединяются с предыдущим глифом. Вкладки, навигация и командный центр Окно AppKit имеет боковую панель вкладок, которую можно перетаскивать для изменения порядка, поддерживает полноэкранный режим и восстанавливает сессии (вкладки, их каталоги и профили). ⌘K открывает центр поверх всех вкладок во всех окнах и всех команд строки меню, ранжированных в одном списке. Строки вкладок показывают индекс, состояние выполнения, заголовок, каталог и процесс переднего плана. Пустой запрос выводит недавние вкладки с выбранной предыдущей, так что ⌘K ⏎ переключает назад; ⌘⌫ закрывает выделенную вкладку. Действия можно искать по словам, с которыми пользователи приходят, например "cls" для Clear Screen или "blurry" для толщины обводки, что открывает Настройки с фокусом на этом элементе управления. Интеграция с оболочкой и tmux Интеграция с оболочками zsh, bash и fish использует OSC 133 для добавления маркеров приглашения на полях, цвет которых зависит от статуса выхода, и перехода между приглашениями по ⌘↑ / ⌘↓. Она не изменяет пользовательские rc-файлы; вместо этого каждая оболочка получает обёртку (ZDOTDIR для zsh, --rcfile для bash, фрагмент vendor_conf.d для fish), которая сначала подключает реальные файлы запуска. Поддерживается режим управления tmux: запуск tmux -CC превращает каждое окно tmux в настоящую вкладку mTerm, при этом ⌘T и ⌘W соответствуют созданию и закрытию окон tmux, а переименования и переключения окон следуют за tmux в обоих направлениях. Вкладка показывает активную панель своего окна. Одновременно одна сессия; отсоединение завершает вкладки. Ссылки, триггеры и профили ⌘-клик открывает ссылки: URL-адреса переходят в браузер, а пути к файлам показываются в Finder. Ссылки визуально не выделяются, пока указатель не находится над ними с зажатой ⌘, тогда ссылка принимает акцентный цвет темы и подчёркивание, а курсор становится рукой. Предлагаются только пути, существующие на диске, а URL-адрес, переносящийся по строкам, рассматривается как один адрес. ⌘-клик также может копировать текст, выделенный цветом, например встроенный код или цитируемый черновик, с подтверждением, показывающим текст и количество символов. Триггеры объединяют регулярное выражение с действием: подсветка, перекраска, подчёркивание, открытие как URL, показ в Finder или запуск команды с $1 в качестве совпадения. Они редактируются в Настройках со встроенным тестером и хранятся в triggers.json. Пользовательские правила проверяются перед двумя встроенными правилами для URL-адресов и путей к файлам, которые можно отключить, но не редактировать. Профили определяют именованную команду, начальный каталог, окружение и необязательную закреплённую тему, хранятся по одному JSON-файлу в profiles/, чтобы их можно было делиться или коммитить. Они открываются через File > New Tab with Profile или ⌘⌥1–9, а ⌘T использует профиль по умолчанию. Настройки, темы и конфигурация Окно Настроек имеет панели Appearance, Profiles, Triggers, General и Notifications с полем поиска, которое находит элементы управления по имени или по разговорному описанию. Темы включают Tomorrow Night, Solarized (светлая и тёмная), Nord, Dracula, Gruvbox Dark и собственные светлую и тёмную mTerm, с импортом файлов iTerm2 .itermcolors и автоматическим переключением светлой/тёмной. Семейство шрифтов, размер, толщина обводки и межстрочный интервал (1.0×–2.0×, по умолчанию 1.15×) настраиваются на лету. Глубина буфера прокрутки настраивается от 1k до 100k строк с отображением стоимости на вкладку. Уведомления macOS охватывают события внимания терминала (звонок, OSC 9 / OSC 777). Подтверждение закрытия для запущенных процессов переднего плана и подтверждение Clear Screen можно включать и отключать. Конфигурация находится в ~/Library/Application Support/mTerm/ в settings.json, state.json, profiles/*.json и triggers.json; отдельного файла конфигурации в v1 нет. Установка и статус Установка через Homebrew cask (brew install --cask d0x2a/tap/mterm), подписанный и нотаризованный универсальный DMG или сборка из исходников с macOS 14+ и Xcode 15+ (или инструментами командной строки Swift 5.10+) с помощью swift run -c release mTerm. Проект находится на версии v1.3.1 и заявляет, что все пункты в его SPEC.md definition of done выпущены. Сообщается, что целевые показатели памяти буфера прокрутки достигнуты с запасом, тогда как пропускная способность не достигает амбициозной цифры из спецификации; и измерения, и тестовый стенд задокументированы в docs/BENCHMARKS.md. Лицензия — MIT, copyright Dox2A Labs LLC.