---
read_when:
    - Зміна поведінки піктограми рядка меню
summary: Стани та анімації піктограми рядка меню для OpenClaw на macOS
title: Піктограма рядка меню
x-i18n:
    generated_at: "2026-04-05T18:10:26Z"
    model: gpt-5.4
    provider: openai
    source_hash: a67a6e6bbdc2b611ba365d3be3dd83f9e24025d02366bc35ffcce9f0b121872b
    source_path: platforms/mac/icon.md
    workflow: 15
---

# Стани піктограми рядка меню

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

- **Бездіяльність:** Звичайна анімація піктограми (кліпання, періодичне похитування).
- **Призупинено:** Елемент статусу використовує `appearsDisabled`; без руху.
- **Голосовий тригер (великі вуха):** Детектор голосового пробудження викликає `AppState.triggerVoiceEars(ttl: nil)`, коли почуто слово активації, зберігаючи `earBoostActive=true`, поки захоплюється висловлювання. Вуха збільшуються (1.9x), отримують круглі отвори у вухах для кращої читабельності, потім опускаються через `stopVoiceEars()` після 1 с тиші. Спрацьовує лише з внутрішнього голосового конвеєра app.
- **Робота (агент виконується):** `AppState.isWorking=true` керує мікрорухом “метушні хвоста/лап”: швидше похитування лап і невелике зміщення, поки виконується робота. Зараз перемикається навколо запусків агента 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`; голосове підсилення встановлює `earScale=1.9` і перемикає `earHoles=true`, не змінюючи загальний кадр (шаблонне зображення 18×18 pt рендериться в буфер Retina 36×36 px).
- Метушня використовує похитування лап до ~1.0 з невеликим горизонтальним тремтінням; вона додається до будь-якого наявного похитування в стані бездіяльності.

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

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