AppCUI-rs

AppCUI-rs एक तेज, क्रॉस-प्लेटफॉर्म Rust लाइब्रेरी है जो आधुनिक, टेक्स्ट-आधारित यूजर इंटरफेस (TUI) बनाने के लिए है, जिसमें समृद्ध विजेट, थीम, और पूर्ण यूनिकोड सपोर्ट है—यह ncurses और अन्य टर्मिनल UI फ्रेमवर्क का विकल्प है।
✨ विशेषताएँ
- [x] कई आउट-ऑफ-द-बॉक्स कंट्रोल्स (बटन, लेबल, टेक्स्ट बॉक्स, चेक बॉक्स, रेडियो बटन, लिस्ट व्यू, ट्री व्यू, कॉम्बो बॉक्स, दिनांक/समय पिकर, रंग पिकर, टैब्स, एकॉर्डियन्स आदि)। सभी कंट्रोल्स की पूरी सूची यहाँ देखी जा सकती है
- [x] शक्तिशाली लेआउट सिस्टम जो आपको कंट्रोल्स को पूर्ण निर्देशांक, सापेक्ष निर्देशांक, डॉकिंग, अलाइनमेंट, एंकर, या पिवट पोजिशनिंग द्वारा स्थित करने देता है (और देखें यहाँ)
- [x] मेन्यू और टूलबार
- [x] मल्टी-प्लेटफॉर्म सपोर्ट (Windows API और वर्चुअल टर्मिनल के जरिए, Linux में ncurses के जरिए, macOS में termios के जरिए)
- [x] बैकग्राउंड टास्क के लिए मल्टी-थ्रेडिंग सपोर्ट
- [x] टाइमर
- [x] माउस सपोर्ट
- [x] क्लिपबोर्ड सपोर्ट
- [x] रंग थीम्स
- [x] यूनिकोड कैरेक्टर का समर्थन
- [x] पूर्व-निर्धारित डायलॉग (संदेश बॉक्स, इनपुट बॉक्स, रंग पिकर, सेव व ओपन डायलॉग, फोल्डर नेविगेटर आदि)
- [x] टर्मिनल के लिए ट्रू-कलर सपोर्ट (24 बिट प्रति पिक्सेल) जो इसे सपोर्ट करते हैं।
📸 स्क्रीनशॉट्स

👉 गैलरी देखें, सभी कंट्रोल्स के पूर्ण डेमो के लिए!
🖥️ बैकएंड्स
AppCUI विभिन्न ऑपरेटिंग सिस्टम के अनुसार कई बैकएंड्स को सपोर्ट करता है:
- विंडोज़ कंसोल - Win32 लो-लेवल API पर आधारित, पारंपरिक विंडोज़ कंसोल के लिए डिज़ाइन किया गया
- विंडोज़ VT - ANSI सीक्वेंस पर आधारित, आधुनिक विंडोज़ वर्चुअल टर्मिनलों के लिए डिज़ाइन किया गया
- एनकर्सेस - लिनक्स परिवेशों के लिए NCurses API पर आधारित
- टर्मियोस - macOS के लिए ANSI सीक्वेंस और लो-लेवल API पर आधारित
- वेब टर्मिनल - वेब कार्यान्वयन के लिए डिज़ाइन किया गया (WebGL पर आधारित)
- क्रॉसटर्म - 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(()) }
या proc-macros का उपयोग करके एक अधिक संक्षिप्त संस्करण: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 फ़ोल्डर में पा सकते हैं, जिनमें शामिल हैं:
- गेम्स जैसे टिक टैक टो, स्नेक, फ्लैपी बर्ड, माइनस्वीपर, राम इट, पैकमैन, चेस, कनेक्ट फोर, 2048 या टेट्रिस
- यूटिलिटीज जैसे कैलकुलेटर, CSV व्यूअर, तापमान कन्वर्टर, या टाइमर
- एनिमेशन जैसे मैट्रिक्स, फ्रैक्टल्स, या स्पाइरल
- कंट्रोल्स/विजेट्स जैसे बटन, चेकबॉक्स, कॉम्बोबॉक्स, डेटपिकर, लिस्टव्यू, ट्रीव्यू और बहुत कुछ।
- डायलॉग्स जैसे नोटिफिकेशन या इनपुट
🛠️ एक अधिक जटिल उदाहरण
एक उदाहरण जो एक विंडो बनाता है जिसमें एक बटन होता है, जिसे दबाने पर काउंटर बढ़ता है।
// 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 will start the window loop and message passing) a.run(); Ok(()) } ``
🛣️ रोडमैप
- [x] विंडोज, लिनक्स, और मैकओएस के लिए बेसिक विजेट्स और समर्थन
- [x] WebGL समर्थन
- [ ] OpenGL / SDL / Vulkan समर्थन
- [ ] कोड हाइलाइटिंग के लिए TextArea समर्थन
🤝 योगदान
योगदान, समस्याएँ, और फीचर अनुरोध स्वागत योग्य हैं! शुरुआत करने के लिए CONTRIBUTING.md देखें।
GitHub Discussions में चर्चा में शामिल हों।
--- Tranlated By Open Ai Tx | Last indexed: 2026-06-13 ---