---
read_when:
    - Зміна поведінки іконки в рядку меню
summary: Стан меню-іконки та анімації для OpenClaw на macOS
title: Іконка в рядку меню
x-i18n:
    generated_at: "2026-04-23T21:00:54Z"
    model: gpt-5.4
    provider: openai
    source_hash: 48a105e1b1450aa511e0319752cec1ffe883228d1e3ac7b1dc400d02983c618a
    source_path: platforms/mac/icon.md
    workflow: 15
---

# Стани іконки в рядку меню

Автор: steipete · Оновлено: 2025-12-06 · Область: застосунок macOS (`apps/macos`)

- **Idle:** Звичайна анімація іконки (кліпання, інколи похитування).
- **Paused:** Елемент status використовує `appearsDisabled`; без руху.
- **Voice trigger (великі вуха):** Детектор голосового пробудження викликає `AppState.triggerVoiceEars(ttl: nil)`, коли чує wake word, утримуючи `earBoostActive=true`, поки захоплюється висловлювання. Вуха збільшуються (1.9x), отримують круглі отвори у вухах для кращої читабельності, а потім опускаються через `stopVoiceEars()` після 1 с тиші. Спрацьовує лише з внутрішнього голосового pipeline застосунку.
- **Working (агент працює):** `AppState.isWorking=true` керує мікрорухом «метушня хвоста/лап»: швидше похитування лап і невелике зміщення, поки робота триває. Наразі перемикається навколо agent run у WebChat; додайте таке саме перемикання навколо інших довгих завдань, коли будете це підключати.

Точки підключення

- Голосове пробудження: runtime/tester викликають `AppState.triggerVoiceEars(ttl: nil)` при спрацюванні тригера і `stopVoiceEars()` після 1 с тиші, щоб це відповідало вікну захоплення.
- Активність агента: встановлюйте `AppStateStore.shared.setWorking(true/false)` навколо проміжків роботи (це вже зроблено у виклику агента WebChat). Тримайте ці проміжки короткими й скидайте стан у блоках `defer`, щоб уникнути завислих анімацій.

Форми та розміри

- Базова іконка малюється в `CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:)`.
- Масштаб вух типово дорівнює `1.0`; voice boost задає `earScale=1.9` і вмикає `earHoles=true`, не змінюючи загальний кадр (template image 18×18 pt, відрендерене у Retina backing store 36×36 px).
- Метушня використовує похитування лап до ~1.0 з невеликим горизонтальним тремтінням; це додається до будь-якого наявного idle wiggle.

Примітки щодо поведінки

- Немає зовнішнього перемикача CLI/broker для вух/working; залишайте це внутрішніми сигналами самого застосунку, щоб уникнути випадкового мерехтіння.
- Тримайте TTL короткими (&lt;10s), щоб іконка швидко поверталася до базового стану, якщо завдання зависне.
