Skip to content

Список поддерживаемых терминалов: полный список 37+ эмуляторов терминала

Что вы сможете делать после изучения

  • Узнать обо всех эмуляторах терминала, поддерживаемых opencode-notify
  • Проверить, поддерживается ли терминал, который вы используете
  • Понять принципы работы автоматического обнаружения терминала
  • Научиться вручную указывать тип терминала

Ваша текущая ситуация

Вы установили opencode-notify, но функция уведомлений работает не совсем корректно. Возможно, терминал не распознается или обнаружение фокуса не работает. Вы используете терминал Alacritty / Windows Terminal / tmux и не уверены, поддерживается ли он. Неудачное распознавание терминала приведет к отказу функции интеллектуальной фильтрации, что повлияет на пользовательский опыт.

Когда использовать эту функцию

Просматривайте список поддерживаемых терминалов в следующих сценариях:

  • Вы хотите узнать, поддерживается ли терминал, который вы используете
  • Автоматическое обнаружение терминала не работает, требуется ручная настройка
  • Вы переключаетесь между несколькими терминалами и хотите узнать об их совместимости
  • Вы хотите узнать технические принципы обнаружения терминала

Основная концепция

opencode-notify использует библиотеку detect-terminal для автоматического распознавания используемого вами эмулятора терминала, поддерживает 37+ терминалов. После успешного обнаружения плагин может:

  • Включить обнаружение фокуса (только macOS): подавлять уведомления, когда терминал находится на переднем плане
  • Поддержать фокусировку по клику (только macOS): щелчок по уведомлению переключает окно терминала

Почему обнаружение терминала так важно?

Обнаружение терминала является основой интеллектуальной фильтрации:

  • Обнаружение фокуса: предотвращает появление уведомлений, пока вы просматриваете терминал
  • Фокусировка по клику: пользователи macOS могут щелкнуть по уведомлению, чтобы вернуться в терминал
  • Оптимизация производительности: разные терминалы могут требовать особой обработки

Если обнаружение не удалось, функция уведомлений останется доступной, но интеллектуальная фильтрация перестанет работать.

Список поддерживаемых терминалов

Терминалы macOS

Название терминалаИмя процессаОсобенности
GhosttyGhostty✅ Обнаружение фокуса + ✅ Фокусировка по клику
iTerm2iTerm2✅ Обнаружение фокуса + ✅ Фокусировка по клику
Kittykitty✅ Обнаружение фокуса + ✅ Фокусировка по клику
WezTermWezTerm✅ Обнаружение фокуса + ✅ Фокусировка по клику
AlacrittyAlacritty✅ Обнаружение фокуса + ✅ Фокусировка по клику
Terminal.appTerminal✅ Обнаружение фокуса + ✅ Фокусировка по клику
HyperHyper✅ Обнаружение фокуса + ✅ Фокусировка по клику
WarpWarp✅ Обнаружение фокуса + ✅ Фокусировка по клику
Встроенный терминал VS CodeCode / Code - Insiders✅ Обнаружение фокуса + ✅ Фокусировка по клику

Особенности терминалов macOS

Терминалы macOS поддерживают полный набор функций:

  • Системные уведомления (Notification Center)
  • Обнаружение фокуса (через AppleScript)
  • Автоматическая фокусировка терминала при клике на уведомление
  • Пользовательские системные звуки

Все терминалы используют macOS Notification Center для отправки уведомлений.

Терминалы Windows

Название терминалаОсобенности
Windows Terminal✅ Системные уведомления (Toast)
Git Bash✅ Системные уведомления (Toast)
ConEmu✅ Системные уведомления (Toast)
Cmder✅ Системные уведомления (Toast)
PowerShell✅ Системные уведомления (Toast)
Встроенный терминал VS Code✅ Системные уведомления (Toast)
Другие терминалы Windows✅ Системные уведомления (Toast)
Ограничения терминалов Windows

На платформе Windows функционал относительно базовый:

  • ✅ Системные уведомления (Windows Toast)
  • ✅ Обнаружение терминала
  • ❌ Обнаружение фокуса (ограничение системы)
  • ❌ Фокусировка по клику (ограничение системы)

Все терминалы Windows отправляют уведомления через Windows Toast, используя системные звуки по умолчанию.

Терминалы Linux

Название терминалаОсобенности
konsole✅ Системные уведомления (notify-send)
xterm✅ Системные уведомления (notify-send)
lxterminal✅ Системные уведомления (notify-send)
alacritty✅ Системные уведомления (notify-send)
kitty✅ Системные уведомления (notify-send)
wezterm✅ Системные уведомления (notify-send)
Встроенный терминал VS Code✅ Системные уведомления (notify-send)
Другие терминалы Linux✅ Системные уведомления (notify-send)
Ограничения терминалов Linux

На платформе Linux функционал относительно базовый:

  • ✅ Системные уведомления (notify-send)
  • ✅ Обнаружение терминала
  • ❌ Обнаружение фокуса (ограничение системы)
  • ❌ Фокусировка по клику (ограничение системы)

Все терминалы Linux отправляют уведомления через notify-send, используя звуки окружения рабочего стола по умолчанию.

Другие поддерживаемые терминалы

Библиотека detect-terminal также поддерживает следующие терминалы (список может быть неполным):

Windows / WSL:

  • WSL Terminal
  • Windows Command Prompt (cmd)
  • PowerShell (pwsh)
  • PowerShell Core (pwsh-preview)
  • Cygwin Mintty
  • MSYS2 MinTTY

macOS / Linux:

  • tmux (обнаруживается через переменные окружения)
  • screen
  • rxvt-unicode (urxvt)
  • rxvt
  • Eterm
  • eterm
  • aterm
  • wterm
  • sakura
  • roxterm
  • xfce4-terminal
  • pantheon-terminal
  • lxterminal
  • mate-terminal
  • terminator
  • tilix
  • guake
  • yakuake
  • qterminal
  • terminology
  • deepin-terminal
  • gnome-terminal
  • konsole
  • xterm
  • uxterm
  • eterm

Статистика количества терминалов

opencode-notify поддерживает 37+ эмуляторов терминала через библиотеку detect-terminal. Если терминал, который вы используете, отсутствует в списке, ознакомьтесь с полным списком detect-terminal.

Принципы обнаружения терминала

Процесс автоматического обнаружения

При запуске плагин автоматически определяет тип терминала:

1. Вызов библиотеки detect-terminal()

2. Сканирование системных процессов, определение текущего терминала

3. Возврат названия терминала (например, "ghostty", "kitty")

4. Поиск в таблице соответствий для получения имени процесса macOS

5. macOS: динамическое получение Bundle ID

6. Сохранение информации о терминале для последующих уведомлений

Таблица соответствия терминалов macOS

В исходном коде предопределено соответствие имен процессов для распространенных терминалов:

typescript
// src/notify.ts:71-84
const TERMINAL_PROCESS_NAMES: Record<string, string> = {
    ghostty: "Ghostty",
    kitty: "kitty",
    iterm: "iTerm2",
    iterm2: "iTerm2",
    wezterm: "WezTerm",
    alacritty: "Alacritty",
    terminal: "Terminal",
    apple_terminal: "Terminal",
    hyper: "Hyper",
    warp: "Warp",
    vscode: "Code",
    "vscode-insiders": "Code - Insiders",
}
Исходный код обнаружения

Полная логика обнаружения терминала:

typescript
// src/notify.ts:145-164
async function detectTerminalInfo(config: NotifyConfig): Promise<TerminalInfo> {
    // Использование переопределения из конфигурации, если предоставлено
    const terminalName = config.terminal || detectTerminal() || null
    
    if (!terminalName) {
        return { name: null, bundleId: null, processName: null }
    }
    
    // Получение имени процесса для обнаружения фокуса
    const processName = TERMINAL_PROCESS_NAMES[terminalName.toLowerCase()] || terminalName
    
    // Динамическое получение Bundle ID из macOS (без жесткого кодирования!)
    const bundleId = await getBundleId(processName)
    
    return {
        name: terminalName,
        bundleId,
        processName,
    }
}

Специальная обработка macOS

На платформе macOS есть дополнительные шаги обнаружения:

  1. Получение Bundle ID: динамический запрос Bundle ID приложения через osascript (например, com.mitchellh.ghostty)
  2. Обнаружение фокуса: запрос имени процесса активного приложения через osascript
  3. Фокусировка по клику: установка параметра activate для уведомления, переключение на терминал по Bundle ID при клике

Преимущества динамического получения Bundle ID

Исходный код не использует жесткое кодирование Bundle ID, а запрашивает его динамически через osascript. Это означает:

  • ✅ Поддержка обновлений терминала (при неизменном Bundle ID)
  • ✅ Снижение затрат на обслуживание (не требуется ручное обновление списка)
  • ✅ Лучшая совместимость (любой терминал macOS теоретически поддерживается)

Поддержка терминала tmux

tmux — это мультиплексор терминалов, плагин обнаруживает сессии tmux через переменные окружения:

bash
# В сессии tmux
echo $TMUX
# Вывод: /tmp/tmux-1000/default,1234,0

# Вне tmux
echo $TMUX
# Вывод: (пусто)

Поддержка рабочего процесса tmux

Пользователи tmux могут нормально использовать функцию уведомлений:

  • Автоматическое обнаружение сессии tmux
  • Уведомления отправляются в текущее окно терминала
  • Без обнаружения фокуса (поддержка многоконного рабочего процесса tmux)

Ручное указание терминала

Если автоматическое обнаружение не работает, вы можете вручную указать тип терминала в файле конфигурации.

Когда требуется ручное указание

Следующие ситуации требуют ручной настройки:

  • Используемый вами терминал отсутствует в списке поддерживаемых detect-terminal
  • Вы используете один терминал внутри другого (например, tmux + Alacritty)
  • Результаты автоматического обнаружения неверны (ошибочно определяется как другой терминал)

Метод настройки

Шаг 1: Откройте файл конфигурации

bash
nano ~/.config/opencode/kdco-notify.json
powershell
notepad $env:USERPROFILE\.config\opencode\kdco-notify.json

Шаг 2: Добавьте конфигурацию terminal

json
{
  "terminal": "ghostty"
}

Шаг 3: Сохраните и перезапустите OpenCode

Доступные названия терминалов

Название терминала должно быть распознаваемым библиотекой detect-terminal. Распространенные названия:

ТерминалЗначение конфигурации
Ghostty"ghostty"
iTerm2"iterm2" или "iterm"
Kitty"kitty"
WezTerm"wezterm"
Alacritty"alacritty"
macOS Terminal"terminal" или "apple_terminal"
Hyper"hyper"
Warp"warp"
VS Code"vscode"
VS Code Insiders"vscode-insiders"
Windows Terminal"windows-terminal" или "Windows Terminal"
Полный список доступных названий

Ознакомьтесь с исходным кодом detect-terminal для получения полного списка.

Пример полной конфигурации для терминала macOS

json
{
  "terminal": "ghostty",
  "notifyChildSessions": false,
  "sounds": {
    "idle": "Glass",
    "error": "Basso",
    "permission": "Submarine"
  }
}

Пример конфигурации для терминалов Windows/Linux

json
{
  "terminal": "Windows Terminal",
  "notifyChildSessions": false,
  "quietHours": {
    "enabled": true,
    "start": "22:00",
    "end": "08:00"
  }
}

Ограничения конфигурации Windows/Linux

Windows и Linux не поддерживают параметр конфигурации sounds (используются системные звуки по умолчанию), а также не поддерживают обнаружение фокуса (ограничение системы).

Контрольная точка ✅

После завершения чтения убедитесь, что:

  • [ ] Вы знаете, поддерживается ли терминал, который вы используете
  • [ ] Вы понимаете принципы автоматического обнаружения терминала
  • [ ] Вы знаете, как вручную указать тип терминала
  • [ ] Вы понимаете различия в функционале между платформами

Распространенные проблемы

Проблема 1: Неудачное обнаружение терминала

Симптом: Уведомления не отображаются или обнаружение фокуса не работает.

Причина: detect-terminal не может распознать ваш терминал.

Решение:

  1. Убедитесь, что название вашего терминала верно (с учетом регистра)
  2. Укажите терминал вручную в файле конфигурации:
json
{
  "terminal": "название-вашего-терминала"
}
  1. Ознакомьтесь со списком поддерживаемых detect-terminal

Проблема 2: Не работает фокусировка по клику в macOS

Симптом: Щелчок по уведомлению не переключает на окно терминала.

Причина: Не удалось получить Bundle ID или терминал отсутствует в таблице соответствий.

Решение:

  1. Проверьте, есть ли терминал в таблице соответствий TERMINAL_PROCESS_NAMES
  2. Если нет, вы можете вручную указать название терминала

Метод проверки:

typescript
// Временная отладка (добавьте console.log в notify.ts)
console.log("Информация о терминале:", terminalInfo)
// Должно отобразиться: { name: "ghostty", bundleId: "com.mitchellh.ghostty", processName: "Ghostty" }

Проблема 3: Не работает обнаружение фокуса в терминале tmux

Симптом: В сессии tmux уведомления появляются даже когда терминал на переднем плане.

Причина: У tmux собственное управление сессиями, обнаружение фокуса может быть неточным.

Пояснение: Это нормальное поведение. В рабочем процессе tmux функция обнаружения фокуса ограничена, но уведомления по-прежнему могут быть получены нормально.

Проблема 4: Встроенный терминал VS Code распознается как Code

Симптом: В конфигурации работают и "vscode", и "vscode-insiders", но вы не знаете, какой использовать.

Пояснение:

  • Используете VS Code Stable → укажите "vscode"
  • Используете VS Code Insiders → укажите "vscode-insiders"

Автоматическое обнаружение автоматически выберет правильное имя процесса в зависимости от установленной версии.

Проблема 5: Неудачное распознавание Windows Terminal

Симптом: Windows Terminal использует название "windows-terminal", но не определяется.

Причина: Имя процесса Windows Terminal может быть WindowsTerminal.exe или Windows Terminal.

Решение: Попробуйте разные значения конфигурации:

json
{
  "terminal": "windows-terminal"  // или "Windows Terminal"
}

Краткое содержание урока

В этом уроке мы узнали:

  • ✅ opencode-notify поддерживает 37+ эмуляторов терминала
  • ✅ Терминалы macOS поддерживают полный набор функций (обнаружение фокуса + фокусировка по клику)
  • ✅ Терминалы Windows/Linux поддерживают базовые уведомления
  • ✅ Принципы автоматического обнаружения терминала и реализация в исходном коде
  • ✅ Как вручную указать тип терминала
  • ✅ Решения распространенных проблем с распознаванием терминалов

Ключевые моменты:

  1. Обнаружение терминала — основа интеллектуальной фильтрации, поддерживает 37+ терминалов
  2. Терминалы macOS имеют самый богатый функционал, Windows/Linux — относительно базовый
  3. При неудаче автоматического обнаружения можно вручную настроить название терминала
  4. Пользователи tmux могут нормально использовать уведомления, но обнаружение фокуса ограничено
  5. Динамическое получение Bundle ID в macOS обеспечивает лучшую совместимость

Анонс следующего урока

В следующем уроке мы изучим Справочник конфигурации.

Вы узнаете:

  • Полное описание параметров конфигурации и значений по умолчанию
  • Настройка звуков (macOS)
  • Конфигурация тихих часов
  • Переключатель уведомлений дочерних сессий
  • Переопределение типа терминала
  • Продвинутые методы настройки

Приложение: Справочник по исходному коду

Нажмите, чтобы развернуть информацию о расположении исходного кода

Обновлено: 2026-01-27

ФункцияПуть к файлуСтроки
Таблица соответствия терминаловsrc/notify.ts71-84
Функция обнаружения терминалаsrc/notify.ts145-164
Получение Bundle ID в macOSsrc/notify.ts135-137
Обнаружение активного приложения в macOSsrc/notify.ts139-143
Обнаружение фокуса в macOSsrc/notify.ts166-175

Ключевые константы:

  • TERMINAL_PROCESS_NAMES: Таблица соответствия названий терминалов именам процессов macOS

Ключевые функции:

  • detectTerminalInfo(): Обнаружение информации о терминале (название, Bundle ID, имя процесса)
  • detectTerminal(): Вызов библиотеки detect-terminal для распознавания терминала
  • getBundleId(): Динамическое получение Bundle ID приложения macOS через osascript
  • getFrontmostApp(): Запрос имени текущего активного приложения
  • isTerminalFocused(): Обнаружение, находится ли терминал на переднем плане (только macOS)

Внешние зависимости:

  • detect-terminal: Библиотека обнаружения терминала, поддерживает 37+ терминалов