تخطَّ إلى المحتوى
EN
كل المشاريع

هورايزن

استراحات للعين تعرف متى تكون أمام الحاسوب فعلًا.

الدور
منفردًا
السنة
2026
الحالة
قيد التطوير
الفئة
سطح المكتب

تطبيق سطح مكتب لماك وويندوز لاستراحات العين وفق قاعدة 20-20-20. وما يميّزه أنه ينمذج الحضور من وقت خمول وحالة قفل ونوم واستيقاظ وكتم للشاشة الكاملة، فلا يزعجك باستراحة لم تكن موجودًا لتفوّتها.

نظرة عامة

نرمش أمام الشاشة أقل بنحو 60%، والعلاج معروف ولا يُتذكَّر أبدًا: كل 20 دقيقة، انظر إلى مسافة 20 قدمًا لمدة 20 ثانية. والجزء الصعب في بناء التذكير ليس المؤقّت.

«هورايزن» هو المحاولة الثانية. أرست الأولى، LookAway، الشكل: مقيم في شريط المهام، محلي بالكامل، إعدادات في ملف JSON، بلا حسابات وبلا خادم. وأعاد «هورايزن» بناءه حول نموذج مجال صريح من حلقة استراحة وحضور وكتم وطبقة عرض وإحصاءات، لأن أخطاء النسخة الأولى كانت كلها مشكلات نمذجة متنكرة في زي مؤقّتات.

بُني بـ

  • Electron
  • TypeScript
  • React
  • electron-vite
  • Vitest
  • Native bridges

أين تجده

التحديات

المؤقّت لا يعرف إن كنت موجودًا

المشكلة

المؤقّت الدوري البسيط يعمل وأنت في اجتماع، وبعد قفلك للشاشة، وفي لحظة استيقاظ الحاسوب بأربع استراحات فائتة متراكمة. وكلٌّ من ذلك يجعل التطبيق يبدو معطلًا.

الحل

الحضور مفهوم من الدرجة الأولى لا فحص مُلحق بالمؤقّت: تُطبَّع حالات الخمول والقفل والنوم واليقظة في رؤية واحدة لِما إذا كان المستخدم أمام الحاسوب فعلًا، وتستهلك حلقة الاستراحة ذلك بدل الزمن المنقضي الخام.

مقاطعة عرض تقديمي لا تُغتفر

المشكلة

طبقة استراحة تملأ الشاشة وتظهر أثناء عرض المستخدم أمام قاعة، أو في منتصف فيلم، هي الفشل الوحيد الذي يضمن حذف التطبيق.

الحل

الكتم سياسة قائمة بذاتها، تقودها حالات الشاشة الكاملة وما يشبه العرض التقديمي، ويُسمح لها بإلغاء استراحة مستحقة تمامًا لا بتأجيل الطبقة فحسب.

Electron لا يكشف ما يلزم

المشكلة

حالة القفل وكشف الخمول والوعي بالشاشة الكاملة تختلف بين الأنظمة وليست متاحة بالكامل عبر واجهات Electron العابرة للمنصات.

الحل

جسور أصلية صغرى لكل منصة، تُستخدم فقط حيث يقصّر Electron فعلًا، ويبقى كل ما عداها في TypeScript مشترك. والجسر عمدًا أصغر سطح يعمل لا طبقة تجريد كاملة.

النتائج

  • قاعدة شيفرة واحدة لماك وويندوز، مع جسور أصلية عند الضرورة فقط.
  • استراحات تحترم حالات الخمول والقفل والنوم والشاشة الكاملة.
  • محلي بالكامل: بلا حساب وبلا خادم، والإعدادات في ملف JSON على القرص.