عن المشروع

Freya هي مكتبة واجهة رسومية أصلية وتصريحية ومتعددة المنصات للغة Rust. تستهدف المطورين الذين يبنون تطبيقات سطح المكتب بلغة Rust ويرغبون في نموذج واجهة قائم على المكوّنات دون الاعتماد على تقنيات الويب. النموذج الأساسي: المكوّنات هي عناصر واجهة قابلة لإعادة الاستخدام تُعاد عرضها عند تغيّر الحالة التي تعتمد عليها. يمكن للمكوّنات الاحتفاظ بحالة داخلية أو الاشتراك في حالة مشتركة، وأي نوع يطبّق السمة Component يمكن أن يعمل كمكوّن؛ ويمكن أن يكون مكوّن التطبيق الجذري دالة عادية. تشمل الأمثلة المدمجة Button وSwitch. تتراوح المكوّنات الجاهزة من عناصر تحكم بسيطة مثل Button وSwitch وSlider إلى مكوّنات أكثر تعقيدًا مثل VirtualScrollView وCalendar وColorPicker. وتوضّحها ملفات الأمثلة التي تبدأ بـ component_ في مجلد الأمثلة. مجالات الميزات الموضحة في README: - الرسوم المتحركة: انتقالات للألوان والأحجام والمواضع، مع التحكم في التوقيت والتخفيف والتسلسلات. - تحرير النصوص المنسّقة: إدارة المؤشر والتحديد واختصارات لوحة المفاتيح والتنسيق المخصص والتظليل الافتراضي. - محرر الأكواد: محرر مستقل عن الحالة يستخدم Rope للنص وtree-sitter لإبراز الصياغة؛ وتوفّر أنت القواعد واستعلام الإبرازات. يُفعّل عبر ميزة code-editor. - عرض Markdown عبر مكوّن MarkdownViewer (ميزة markdown). - التوجيه والتنقل باستخدام اشتقاق Routable والتخطيطات والروابط وسياق الموجّه (ميزة router). - إدارة الحالة العامة عبر freya-radio، وهو نظام قائم على القنوات تشترك فيه المكوّنات في القنوات وتتلقى التحديثات فقط عند تغيّر البيانات ذات الصلة (ميزة radio). - تكامل مكتبة الأيقونات، ويدعم حاليًا Lucide. - الاختبار بلا واجهة عبر freya-testing، الذي يمكنه محاكاة التفاعلات وعرض حالة الواجهة إلى ملفات؛ وتستخدمه Freya نفسها لاختبار المكوّنات المدمجة. - الرسوم البيانية والتخطيط عبر مكتبة Plotters (ميزة ploters). - التدويل باستخدام نظام التوطين Fluent، مع الترجمات والجمع وتبديل اللغة (ميزة i18n). - معدّلات نمط مستوحاة من Material Design مثل تأثيرات ripple (ميزة material-design). - تكامل WebView لتضمين محتوى الويب إلى جانب الواجهة الأصلية (ميزة webview). - محاكاة الطرفية مع دعم PTY للأطراف المدمجة أو عملاء SSH (ميزة terminal-pty). - أدوات للمطورين لفحص شجرة المكوّنات في الوقت الفعلي (ميزة devtools). الاستخدام: يُحدد أحدث إصدار مستقر كـ freya = "0.4"، مع إصدار أولي 0.5.0-rc.7 وخيار فرع main. يستخدم المستودع وحدات فرعية من git، لذا يتطلب الاستنساخ --recurse-submodules أو لاحقًا git submodule update --init --recursive. يمكن تشغيل الأمثلة عبر cargo run --example counter. ويوجد دليل لإعداد التطوير مرتبط من الوثائق. ويشير README إلى مشكلة ترجمة محتملة على Windows مع windows-gnu. يربط المشروع موقعًا إلكترونيًا ووثائق docs.rs وخادم Discord وإرشادات المساهمة وصفحة رعاية، وينسب الفضل إلى Dioxus وrust-skia ومساهمين آخرين.