---
read_when:
    - Изменение поведения значка в строке меню
summary: Состояния и анимации значка OpenClaw в строке меню macOS
title: Значок в строке меню
x-i18n:
    generated_at: "2026-07-13T19:58:28Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 24
    provider: openai
    source_hash: 8a38f1253f0c376ef2ce6c0ae339b67084c472c764964bcc7ad21e10133e2b47
    source_path: platforms/mac/icon.md
    workflow: 16
---

# Состояния значка в строке меню

Область: приложение macOS (`apps/macos`). Отрисовка: `CritterIconRenderer.makeIcon(...)`. Связь анимации и состояний: `CritterStatusLabel` + `CritterStatusLabel+Behavior.swift`.

## Состояния

| Состояние                    | Условие срабатывания                              | Визуальное представление                                                                                                     |
| ---------------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| Бездействие                  | По умолчанию                                      | Обычная анимация моргания и покачивания; в открытых глазах сохраняется глянцевый блик                                         |
| Приостановлено               | `isPaused=true`                                | Антенны опущены («не на службе»), глаза открыты; движения отсутствуют                                                        |
| Сон                          | Gateway отключён или не настроен                  | Антенны опущены, а глаза закрываются веками `⌣ ⌣`; движения отсутствуют                                          |
| Празднование                 | Сообщение отправлено (`sendCelebrationTick`)         | Глаза примерно на 0,9 с превращаются в радостные дуги `∩ ∩`, одновременно происходит взмах ногой                 |
| Голосовая активация (уши)    | Распознано слово активации                        | Антенны выпрямляются и вытягиваются вверх (`earScale=1.9`); после периода тишины возвращаются в исходное положение         |
| Работа                       | `isWorking=true` или активный `IconState` | Более быстрое движение ног (от `legWiggle` до `1.0`) с небольшим смещением по горизонтали поверх обычного покачивания |

Поверх того же значка существа может отображаться индикатор активности инструмента (плашка с символом SF, например `chevron.left.slash.chevron.right` для выполнения), когда в сеансе активно задание или инструмент. Этот индикатор поступает из `IconState`/`ActivityKind`; полную модель состояний см. в разделе [Строка меню](/ru/platforms/mac/menu-bar).

## Антенны при голосовой активации

- Запуск: `AppStateStore.shared.triggerVoiceEars(ttl: nil)`, вызывается из конвейера захвата голосовой активации (`VoiceWakeRuntime`) и из средств отладки и тестирования голосовой активации (`VoiceWakeTester`, `VoiceWakeOverlayController`).
- Остановка: `stopVoiceEars()`, вызывается при завершении захвата.
- Период тишины перед завершением: обычно `2.0s`, либо `5.0s`, если было распознано только слово активации и за ним не последовала речь (`VoiceWakeRuntime.silenceWindow` / `triggerOnlySilenceWindow`).
- В активированном состоянии таймеры моргания, покачивания, движения ног и антенн при бездействии приостанавливаются (`earBoostActive` управляет выполнением задачи анимации в `CritterStatusLabel+Behavior`).

## Формы и размеры

- Холст: шаблонное изображение размером 18x18 pt, отрисовываемое в растровый буфер размером 36x36 px (2x), чтобы значок оставался чётким на дисплеях Retina.
- По умолчанию масштаб антенн равен `1.0`; при голосовой активации устанавливается `earScale=1.9` без изменения общего размера рамки.
- `antennaDroop` (0–1) опускает антенны для состояний приостановки и сна.
- Быстрое движение ног использует значения от `legWiggle` до `1.0` с небольшим покачиванием по горизонтали.

## Примечания о поведении

- Внешнего переключателя CLI или брокера для антенн и рабочего состояния нет; оба состояния управляются внутренними сигналами приложения (`AppState.setWorking`, `AppState.triggerVoiceEars`), чтобы избежать случайного переключения.
- Для любого нового TTL задавайте короткое значение (значительно меньше 10 с), чтобы значок быстро возвращался к исходному состоянию, если задание зависнет.

## Связанные разделы

- [Строка меню](/ru/platforms/mac/menu-bar)
- [Приложение macOS](/ru/platforms/macos)
