AppCUI-rs

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

👉 गैलरी में सभी कंट्रोल्स के पूर्ण डेमो देखें!
🖥️ बैकएंड्स
AppCUI विभिन्न ऑपरेटिंग सिस्टम के अनुसार विभिन्न बैकएंड्स का समर्थन करता है:
- Windows Console - Win32 लो-लेवल API पर आधारित, क्लासिकल विंडोज़ कंसोल के लिए डिज़ाइन किया गया
- Windows VT - ANSI अनुक्रमों पर आधारित, आधुनिक विंडोज़ वर्चुअल टर्मिनल्स के लिए डिज़ाइन किया गया
- NCurses - लिनक्स वातावरण के लिए NCurses API पर आधारित
- Termios - ANSI अनुक्रमों और MAC OSX के लिए लो-लेवल APIs पर आधारित
- Web Terminal - वेब इम्प्लीमेंटेशन के लिए डिज़ाइन किया गया (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] वेबजीएल सपोर्ट
- [ ] ओपनजीएल / एसडीएल / वल्कन सपोर्ट
- [ ] कोड हाइलाइटिंग के लिए टेक्स्टएरिया सपोर्ट
🤝 योगदान
योगदान, समस्याएं, और फीचर अनुरोध स्वागत योग्य हैं! शुरू करने के लिए CONTRIBUTING.md देखें।
GitHub Discussions में चर्चा में शामिल हों।
--- Tranlated By Open Ai Tx | Last indexed: 2026-02-09 ---