AppCUI-rs

AppCUI-rs هي مكتبة Rust سريعة ومتعددة المنصات لبناء واجهات مستخدم حديثة قائمة على النصوص (TUIs) مع عناصر واجهة غنية ومواضيع ودعم كامل لـ Unicode—بديل لـ ncurses وأطر واجهات الطرفية الأخرى.
✨ الميزات
- [x] عناصر تحكم جاهزة متعددة (أزرار، تسميات، صناديق نصية، صناديق اختيار، أزرار اختيار، قوائم، شجرات، قوائم منسدلة، منتقيات تاريخ/وقت، منتقيات ألوان، تبويبات، أكورديونات، إلخ). القائمة الكاملة لعناصر التحكم يمكن العثور عليها هنا
- [x] نظام تخطيط قوي يسمح لك بترتيب العناصر باستخدام إحداثيات مطلقة، نسبية، إرساء، محاذاة، نقاط ارتكاز أو تموضع محوري (اطلع على المزيد هنا)
- [x] قوائم وأشرطة أدوات
- [x] دعم متعدد المنصات (ويندوز عبر API والطرفية الافتراضية، لينكس عبر ncurses، ماك أو إس عبر termios)
- [x] دعم للتعددية في المعالجة للسماح بالمهام الخلفية
- [x] مؤقتات
- [x] دعم للفأرة
- [x] دعم للحافظة
- [x] مواضيع ألوان
- [x] دعم لحروف الـ Unicode
- [x] حوارات معرفة مسبقًا (صندوق رسائل، صندوق إدخال، منتقي ألوان، حوارات حفظ وفتح، مستعرض مجلدات، إلخ)
- [x] دعم الألوان الحقيقية (24 بت لكل بكسل) للطرفيات التي تدعمها.
📸 لقطات شاشة

👉 اطلع على المعرض لمشاهدة عروض كاملة لجميع العناصر!
🖥️ الأنظمة الخلفية
يدعم AppCUI العديد من الأنظمة الخلفية حسب نظام التشغيل المستخدم:
- كونسول ويندوز - يعتمد على واجهة برمجة التطبيقات Win32 منخفضة المستوى، مصمم للكونسول الكلاسيكي في ويندوز
- ويندوز VT - يعتمد على تسلسل ANSI، مصمم للمحطات الافتراضية الحديثة في ويندوز
- NCurses - يعتمد على واجهة برمجة تطبيقات NCurses لبيئات لينكس
- Termios - يعتمد على تسلسلات ANSI وواجهات برمجة التطبيقات منخفضة المستوى لنظام MAC OSX
- ويب تيرمينال - مصمم للتنفيذ على الويب (معتمد على webgl)
- CrossTerm - يعتمد على مكتبة crossterm
، ويتم تفعيله عبر علم خاص بالميزات
🚀 البداية السريعة
أضف ما يلي إلى ملف Cargo.toml الخاص بك:
toml
[dependencies]
appcui = "*"
ثم أنشئ مشروع Rust جديد وأضف الكود التالي:
rust
use appcui::prelude::*;fn main() -> Result<(), appcui::system::Error> { let mut app = App::new().build()?; let mut win = Window::new( "Test", LayoutBuilder::new().alignment(Alignment::Center).width(30).height(9).build(), window::Flags::Sizeable, ); win.add(Label::new( "Hello World !", LayoutBuilder::new().alignment(Alignment::Center).width(13).height(1).build(), )); app.add_window(win); app.run(); Ok(()) }
أو نسخة أكثر إحكامًا باستخدام وحدات الماكرو الإجرائية:rs
use appcui::prelude::*;fn main() -> Result<(), appcui::system::Error> { let mut app = App::new().build()?; let mut win = window!("Test,a:c,w:30,h:9"); win.add(label!("'Hello World !',a:c,w:13,h:1")); app.add_window(win); app.run(); Ok(()) }
rust use appcui::prelude::*;ثم قم بتشغيل المشروع باستخدام الأمرcargo run. يجب أن تظهر نافذة بعنوانTestونصHello World !في الوسط.🧪 أمثلة
يأتي AppCUI-rs مع مجموعة من الأمثلة لمساعدتك على البدء. يمكنك العثور عليها في مجلد examples، بما في ذلك:
- الألعاب مثل Tic Tac Toe، Snake، Flappy Bird، Minesweeper، Ram it، PacMan، Chees، Connect Four، 2048 أو Tetris
- الأدوات مثل Calculator، CSV Viewer، Temperature Converter أو Timer
- الرسوم المتحركة مثل Matrix، Fractals أو Spiral
- عناصر التحكم/الحاجيات مثل Button، CheckBox، ComboBox، DatePicker، ListView، TreeView والمزيد.
- الحوارات مثل Notification أو Input
🛠️ مثال أكثر تعقيداً
مثال ينشئ نافذة تحتوي على زر، وعند الضغط عليه يزيد عداداً.
// Create a window that handles button events and has a counter #[Window(events = ButtonEvents)] struct CounterWindow { counter: i32 }
impl CounterWindow { fn new() -> Self { let mut w = Self { // set up the window title and position base: window!("'Counter window',a:c,w:30,h:5"), // initial counter is 1 counter: 1 }; // add a single button with the caption "1" (like the counter) w.add(button!("'1',d:b,w:20")); w } } impl ButtonEvents for CounterWindow { // When the button is pressed, this function will be called // with the handle of the button that was pressed // Since we only have one button, we don't need to store its handle // in the struct, as we will receive the handle via the on_pressed method fn on_pressed(&mut self, handle: Handle
fn main() -> Result<(), appcui::system::Error> { // create a new application let mut a = App::new().build()?; // add a new window (of type CounterWindow) to the application a.add_window(CounterWindow::new()); // Run AppCUI framework (this wil start the window loop and messaage passing) a.run(); Ok(()) } ``
🛣️ خارطة الطريق
- [x] مجموعة أساسية من العناصر ودعم لأنظمة ويندوز، لينكس وماك أو إس
- [x] دعم WebGL
- [ ] دعم OpenGL / SDL / Vulkan
- [ ] دعم TextArea لإبراز الشيفرة
🤝 المساهمة
المساهمات، والمشكلات، وطلبات الميزات مرحب بها! اطلع على CONTRIBUTING.md للبدء.
انضم للنقاش في مناقشات GitHub.
--- Tranlated By Open Ai Tx | Last indexed: 2026-02-09 ---