Список поддерживаемых терминалов: полный список 37+ эмуляторов терминала
Что вы сможете делать после изучения
- Узнать обо всех эмуляторах терминала, поддерживаемых opencode-notify
- Проверить, поддерживается ли терминал, который вы используете
- Понять принципы работы автоматического обнаружения терминала
- Научиться вручную указывать тип терминала
Ваша текущая ситуация
Вы установили opencode-notify, но функция уведомлений работает не совсем корректно. Возможно, терминал не распознается или обнаружение фокуса не работает. Вы используете терминал Alacritty / Windows Terminal / tmux и не уверены, поддерживается ли он. Неудачное распознавание терминала приведет к отказу функции интеллектуальной фильтрации, что повлияет на пользовательский опыт.
Когда использовать эту функцию
Просматривайте список поддерживаемых терминалов в следующих сценариях:
- Вы хотите узнать, поддерживается ли терминал, который вы используете
- Автоматическое обнаружение терминала не работает, требуется ручная настройка
- Вы переключаетесь между несколькими терминалами и хотите узнать об их совместимости
- Вы хотите узнать технические принципы обнаружения терминала
Основная концепция
opencode-notify использует библиотеку detect-terminal для автоматического распознавания используемого вами эмулятора терминала, поддерживает 37+ терминалов. После успешного обнаружения плагин может:
- Включить обнаружение фокуса (только macOS): подавлять уведомления, когда терминал находится на переднем плане
- Поддержать фокусировку по клику (только macOS): щелчок по уведомлению переключает окно терминала
Почему обнаружение терминала так важно?
Обнаружение терминала является основой интеллектуальной фильтрации:
- Обнаружение фокуса: предотвращает появление уведомлений, пока вы просматриваете терминал
- Фокусировка по клику: пользователи macOS могут щелкнуть по уведомлению, чтобы вернуться в терминал
- Оптимизация производительности: разные терминалы могут требовать особой обработки
Если обнаружение не удалось, функция уведомлений останется доступной, но интеллектуальная фильтрация перестанет работать.
Список поддерживаемых терминалов
Терминалы macOS
| Название терминала | Имя процесса | Особенности |
|---|---|---|
| Ghostty | Ghostty | ✅ Обнаружение фокуса + ✅ Фокусировка по клику |
| iTerm2 | iTerm2 | ✅ Обнаружение фокуса + ✅ Фокусировка по клику |
| Kitty | kitty | ✅ Обнаружение фокуса + ✅ Фокусировка по клику |
| WezTerm | WezTerm | ✅ Обнаружение фокуса + ✅ Фокусировка по клику |
| Alacritty | Alacritty | ✅ Обнаружение фокуса + ✅ Фокусировка по клику |
| Terminal.app | Terminal | ✅ Обнаружение фокуса + ✅ Фокусировка по клику |
| Hyper | Hyper | ✅ Обнаружение фокуса + ✅ Фокусировка по клику |
| Warp | Warp | ✅ Обнаружение фокуса + ✅ Фокусировка по клику |
| Встроенный терминал VS Code | Code / 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
В исходном коде предопределено соответствие имен процессов для распространенных терминалов:
// 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",
}Исходный код обнаружения
Полная логика обнаружения терминала:
// 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 есть дополнительные шаги обнаружения:
- Получение Bundle ID: динамический запрос Bundle ID приложения через
osascript(например,com.mitchellh.ghostty) - Обнаружение фокуса: запрос имени процесса активного приложения через
osascript - Фокусировка по клику: установка параметра
activateдля уведомления, переключение на терминал по Bundle ID при клике
Преимущества динамического получения Bundle ID
Исходный код не использует жесткое кодирование Bundle ID, а запрашивает его динамически через osascript. Это означает:
- ✅ Поддержка обновлений терминала (при неизменном Bundle ID)
- ✅ Снижение затрат на обслуживание (не требуется ручное обновление списка)
- ✅ Лучшая совместимость (любой терминал macOS теоретически поддерживается)
Поддержка терминала tmux
tmux — это мультиплексор терминалов, плагин обнаруживает сессии tmux через переменные окружения:
# В сессии tmux
echo $TMUX
# Вывод: /tmp/tmux-1000/default,1234,0
# Вне tmux
echo $TMUX
# Вывод: (пусто)Поддержка рабочего процесса tmux
Пользователи tmux могут нормально использовать функцию уведомлений:
- Автоматическое обнаружение сессии tmux
- Уведомления отправляются в текущее окно терминала
- Без обнаружения фокуса (поддержка многоконного рабочего процесса tmux)
Ручное указание терминала
Если автоматическое обнаружение не работает, вы можете вручную указать тип терминала в файле конфигурации.
Когда требуется ручное указание
Следующие ситуации требуют ручной настройки:
- Используемый вами терминал отсутствует в списке поддерживаемых
detect-terminal - Вы используете один терминал внутри другого (например, tmux + Alacritty)
- Результаты автоматического обнаружения неверны (ошибочно определяется как другой терминал)
Метод настройки
Шаг 1: Откройте файл конфигурации
nano ~/.config/opencode/kdco-notify.jsonnotepad $env:USERPROFILE\.config\opencode\kdco-notify.jsonШаг 2: Добавьте конфигурацию terminal
{
"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
{
"terminal": "ghostty",
"notifyChildSessions": false,
"sounds": {
"idle": "Glass",
"error": "Basso",
"permission": "Submarine"
}
}Пример конфигурации для терминалов Windows/Linux
{
"terminal": "Windows Terminal",
"notifyChildSessions": false,
"quietHours": {
"enabled": true,
"start": "22:00",
"end": "08:00"
}
}Ограничения конфигурации Windows/Linux
Windows и Linux не поддерживают параметр конфигурации sounds (используются системные звуки по умолчанию), а также не поддерживают обнаружение фокуса (ограничение системы).
Контрольная точка ✅
После завершения чтения убедитесь, что:
- [ ] Вы знаете, поддерживается ли терминал, который вы используете
- [ ] Вы понимаете принципы автоматического обнаружения терминала
- [ ] Вы знаете, как вручную указать тип терминала
- [ ] Вы понимаете различия в функционале между платформами
Распространенные проблемы
Проблема 1: Неудачное обнаружение терминала
Симптом: Уведомления не отображаются или обнаружение фокуса не работает.
Причина: detect-terminal не может распознать ваш терминал.
Решение:
- Убедитесь, что название вашего терминала верно (с учетом регистра)
- Укажите терминал вручную в файле конфигурации:
{
"terminal": "название-вашего-терминала"
}- Ознакомьтесь со списком поддерживаемых detect-terminal
Проблема 2: Не работает фокусировка по клику в macOS
Симптом: Щелчок по уведомлению не переключает на окно терминала.
Причина: Не удалось получить Bundle ID или терминал отсутствует в таблице соответствий.
Решение:
- Проверьте, есть ли терминал в таблице соответствий
TERMINAL_PROCESS_NAMES - Если нет, вы можете вручную указать название терминала
Метод проверки:
// Временная отладка (добавьте 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.
Решение: Попробуйте разные значения конфигурации:
{
"terminal": "windows-terminal" // или "Windows Terminal"
}Краткое содержание урока
В этом уроке мы узнали:
- ✅ opencode-notify поддерживает 37+ эмуляторов терминала
- ✅ Терминалы macOS поддерживают полный набор функций (обнаружение фокуса + фокусировка по клику)
- ✅ Терминалы Windows/Linux поддерживают базовые уведомления
- ✅ Принципы автоматического обнаружения терминала и реализация в исходном коде
- ✅ Как вручную указать тип терминала
- ✅ Решения распространенных проблем с распознаванием терминалов
Ключевые моменты:
- Обнаружение терминала — основа интеллектуальной фильтрации, поддерживает 37+ терминалов
- Терминалы macOS имеют самый богатый функционал, Windows/Linux — относительно базовый
- При неудаче автоматического обнаружения можно вручную настроить название терминала
- Пользователи tmux могут нормально использовать уведомления, но обнаружение фокуса ограничено
- Динамическое получение Bundle ID в macOS обеспечивает лучшую совместимость
Анонс следующего урока
В следующем уроке мы изучим Справочник конфигурации.
Вы узнаете:
- Полное описание параметров конфигурации и значений по умолчанию
- Настройка звуков (macOS)
- Конфигурация тихих часов
- Переключатель уведомлений дочерних сессий
- Переопределение типа терминала
- Продвинутые методы настройки
Приложение: Справочник по исходному коду
Нажмите, чтобы развернуть информацию о расположении исходного кода
Обновлено: 2026-01-27
| Функция | Путь к файлу | Строки |
|---|---|---|
| Таблица соответствия терминалов | src/notify.ts | 71-84 |
| Функция обнаружения терминала | src/notify.ts | 145-164 |
| Получение Bundle ID в macOS | src/notify.ts | 135-137 |
| Обнаружение активного приложения в macOS | src/notify.ts | 139-143 |
| Обнаружение фокуса в macOS | src/notify.ts | 166-175 |
Ключевые константы:
TERMINAL_PROCESS_NAMES: Таблица соответствия названий терминалов именам процессов macOS
Ключевые функции:
detectTerminalInfo(): Обнаружение информации о терминале (название, Bundle ID, имя процесса)detectTerminal(): Вызов библиотеки detect-terminal для распознавания терминалаgetBundleId(): Динамическое получение Bundle ID приложения macOS через osascriptgetFrontmostApp(): Запрос имени текущего активного приложенияisTerminalFocused(): Обнаружение, находится ли терминал на переднем плане (только macOS)
Внешние зависимости:
- detect-terminal: Библиотека обнаружения терминала, поддерживает 37+ терминалов