حالات أيقونة شريط القوائم
المؤلف: steipete · آخر تحديث: 2025-12-06 · النطاق: تطبيق macOS (apps/macos)
- الخمول: حركة الأيقونة العادية (رمش، واهتزاز خفيف من حين لآخر).
- الإيقاف المؤقت: يستخدم عنصر الحالة
appearsDisabled؛ بلا حركة. - مشغل الصوت (آذان كبيرة): يستدعي كاشف التنبيه الصوتي
AppState.triggerVoiceEars(ttl: nil)عند سماع كلمة التنبيه، مما يُبقيearBoostActive=trueأثناء التقاط العبارة. تكبر الأذنان (1.9x)، وتحصلان على فتحات دائرية للوضوح، ثم تنخفضان عبرstopVoiceEars()بعد ثانية واحدة من الصمت. ولا يتم تشغيل هذا إلا من مسار الصوت داخل التطبيق. - العمل جارٍ (الوكيل يعمل): يقود
AppState.isWorking=trueحركة دقيقة من نوع “حركة ذيل/أرجل سريعة”: اهتزاز أسرع للأرجل مع انزياح طفيف أثناء وجود العمل قيد التنفيذ. يتم تبديله حاليًا حول تشغيلات وكيل WebChat؛ أضف المفتاح نفسه حول المهام الطويلة الأخرى عند توصيلها.
- التنبيه الصوتي: يستدعي runtime/tester الأمر
AppState.triggerVoiceEars(ttl: nil)عند التشغيل وstopVoiceEars()بعد ثانية واحدة من الصمت لمطابقة نافذة الالتقاط. - نشاط الوكيل: اضبط
AppStateStore.shared.setWorking(true/false)حول فترات العمل (وقد تم ذلك بالفعل في استدعاء وكيل WebChat). أبقِ هذه الفترات قصيرة وأعد الضبط داخل كتلdeferلتجنب تعلق الرسوم المتحركة.
- تُرسَم الأيقونة الأساسية في
CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:). - يكون مقياس الأذن افتراضيًا
1.0؛ ويضبط التعزيز الصوتيearScale=1.9ويبدّلearHoles=trueمن دون تغيير الإطار العام (صورة template بحجم 18×18 نقطة تُرسَم داخل backing store بحجم 36×36 بكسل Retina). - تستخدم حركة scurry اهتزازًا للأرجل يصل إلى نحو ~1.0 مع اهتزاز أفقي صغير؛ وهي تُضاف إلى أي اهتزاز خمول موجود.
- لا يوجد تبديل خارجي عبر CLI/broker للأذنين/حالة العمل؛ احتفظ به داخليًا ضمن إشارات التطبيق نفسه لتجنب الاهتزاز العرضي.
- أبقِ قيم TTL قصيرة (<10s) حتى تعود الأيقونة إلى خط الأساس سريعًا إذا علقت مهمة ما.