
مكتبة واجهة طرفية بلغة Rust
مجاني
Ratatui هي مكتبة Rust مصممة لبناء واجهات مستخدم طرفية (TUI) غنية وتفاعلية. وهي نسخة مجتمعية مطورة من مشروع tui-rs الأصلي، مع التركيز على تحسين الأداء، وتجربة استخدام أفضل، ودورة تطوير أكثر نشاطاً. من خلال الاستفادة من نموذج الملكية (ownership model) وأمان الأنواع في Rust، تتيح Ratatui للمطورين إنشاء تطبيقات طرفية معقدة ومتعددة النوافذ تتسم بالكفاءة في استهلاك الذاكرة والاستجابة العالية. وعلى عكس أدوات لوحة التحكم المستندة إلى الويب، تقوم Ratatui بالرسم مباشرة على مخزن الطرفية المؤقت، مما يجعلها مثالية للبيئات محدودة الموارد، وأدوات SSH، ومرافق مراقبة CLI عالية الأداء.
تستخدم Ratatui نهجاً تعريفياً حيث تحدد هيكل واجهة المستخدم كشجرة من العناصر. هذا يفصل منطق الرسم عن حالة التطبيق. من خلال استدعاء طريقة الرسم على كل عنصر، تحسب المكتبة تحديثات المخزن المؤقت الضرورية، مما يضمن إعادة رسم الخلايا المتغيرة فقط. هذا يقلل من الوميض ويخفض استخدام وحدة المعالجة المركزية، وهو أمر بالغ الأهمية لتحديثات البيانات عالية التردد في أدوات المراقبة.
يدعم محرك التخطيط قيوداً مثل النسبة المئوية، الطول، والحد الأدنى/الأقصى، مما يسمح بتصاميم واجهة مستخدم متجاوبة تتكيف مع تغيير حجم الطرفية. يستخدم حلاً قائماً على القيود لحساب هندسة أجزاء الواجهة ديناميكياً. يتيح ذلك للمطورين بناء لوحات تحكم معقدة تعيد ترتيب نفسها تلقائياً عند تغيير المستخدم لحجم نافذة الطرفية، مما يضمن تجربة مستخدم متسقة عبر دقات الشاشة المختلفة.
من خلال استخدام استراتيجية التخزين المؤقت المزدوج، تحتفظ Ratatui بتمثيل داخلي لشاشة الطرفية. تقارن المخزن المؤقت الحالي بالحالة السابقة وترسل فقط تسلسلات الهروب ANSI الضرورية إلى محاكي الطرفية. يقلل هذا التحسين بشكل كبير من عبء الإدخال/الإخراج، مما يسمح برسوم متحركة سلسة وتحديثات سريعة حتى عبر اتصالات SSH ذات زمن انتقال عالٍ حيث يكون النطاق الترددي محدوداً.
توفر Ratatui مجموعة شاملة من العناصر المدمجة بما في ذلك الجداول، القوائم، المقاييس، المخططات، وخطوط الشرارة. هذه العناصر قابلة للتخصيص بدرجة عالية، مما يسمح بتنسيق مخصص، حدود، وزخارف للكتل. ولأن المكتبة مكتوبة بلغة Rust، فإن هذه العناصر آمنة من حيث الأنواع، مما يمنع أخطاء واجهة المستخدم الشائعة مثل أخطاء تجاوز حدود الفهرس عند رسم مجموعات بيانات ديناميكية أو التعامل مع تنقل المستخدم.
تم فصل Ratatui عن خلفية الطرفية، لكنها تأتي مع دعم من الدرجة الأولى لـ Crossterm. يوفر هذا التكامل توافقاً عبر المنصات، مما يضمن عمل واجهة TUI الخاصة بك بسلاسة على Linux و macOS و Windows. وهي تتعامل مع قدرات الطرفية المعقدة مثل أحداث الماوس، إدخال لوحة المفاتيح، ودعم الألوان (حتى 24-بت TrueColor) دون الحاجة إلى كتابة كود خاص بكل منصة.
أضف 'ratatui' و 'crossterm' (كخلفية) إلى تبعيات ملف Cargo.toml الخاص بك.، قم بتهيئة خلفية الطرفية باستخدام CrosstermBackend في دالة main.، حدد تخطيط واجهة المستخدم باستخدام هيكل Layout لتقسيم شاشة الطرفية إلى أجزاء.، أنشئ عناصر واجهة المستخدم (List, Table, Gauge, Paragraph) وقم برسمها داخل أجزاء التخطيط ضمن حلقة الرسم (draw loop).، تعامل مع أحداث إدخال المستخدم باستخدام crossterm::event لتحديث حالة تطبيقك.، قم بتنظيف حالة الطرفية عن طريق تعطيل الوضع الخام (raw mode) ومغادرة الشاشة البديلة قبل الخروج.
يستخدم مسؤولو النظام Ratatui لبناء أدوات مراقبة خفيفة وعالية الأداء تعرض استخدام وحدة المعالجة المركزية والذاكرة والشبكة في الوقت الفعلي. ولأنها تعمل مباشرة في الطرفية، فهي مثالية لإدارة الخوادم عن بُعد عبر SSH حيث لا تتوفر واجهات رسومية.
يبني المطورون مرافق CLI تفاعلية لإدارة المهام أو تحليل السجلات. باستخدام Ratatui، يمكنهم تزويد المستخدمين بواجهة حديثة تدعم الماوس وتشبه تطبيقات سطح المكتب مع البقاء بالكامل داخل بيئة الطرفية.
يستخدم علماء البيانات والمهندسون Ratatui لرسم المخططات وخطوط الشرارة مباشرة من تدفقات البيانات الخام. يسمح هذا بالنماذج الأولية السريعة لخطوط أنابيب البيانات حيث يكون تصور الاتجاهات في الوقت الفعلي ضرورياً دون عبء الواجهة الأمامية المستندة إلى الويب.
المطورون الذين يتطلعون لبناء تطبيقات طرفية عالية الأداء ويرغبون في الاستفادة من أمان وسرعة Rust. يحتاجون إلى مكتبة قوية تتعامل مع تعقيدات الرسم في الطرفية مع البقاء ضمن أسلوب اللغة.
المهندسون الذين يحتاجون إلى إنشاء أدوات مراقبة مخصصة وخفيفة للبنية التحتية. يحتاجون إلى أدوات قابلة للنقل، ذات تبعيات قليلة، وتعمل بشكل جيد في بيئات الخوادم محدودة الموارد.
مبتكرو أدوات CLI مفتوحة المصدر الذين يرغبون في تحسين تجربة المستخدم من خلال الانتقال من مخرجات النص البسيطة إلى واجهات مرئية تفاعلية تدعم التنقل والتحديثات في الوقت الفعلي.
مشروع مفتوح المصدر مرخص بموجب رخصة MIT. مجاني تماماً للاستخدام والتعديل والتوزيع للأغراض الشخصية أو التجارية.