AppCUI-rs

AppCUI-rs, modern, metin tabanlı kullanıcı arayüzleri (TUI) oluşturmak için zengin widget'lar, temalar ve tam Unicode desteği sunan, hızlı ve çapraz platform Rust kütüphanesidir—ncurses ve diğer terminal arayüz çerçevelerine alternatif olarak tasarlanmıştır.
✨ Özellikler
- [x] kutudan çıkar çıkmaz birden fazla kontrol (butonlar, etiketler, metin kutuları, onay kutuları, radyo düğmeleri, liste görünümleri, ağaç görünümleri, kombolar, tarih/saat seçiciler, renk seçiciler, sekmeler, akordeonlar vb.). Kontrollerin tam listesi için buraya bakabilirsiniz
- [x] güçlü bir yerleşim sistemi ile mutlak koordinatlar, göreli koordinatlar, kenetleme, hizalama, sabitleme veya pivot konumlandırma ile kontrolleri yerleştirebilirsiniz (daha fazla bilgi için buraya bakınız)
- [x] menüler ve araç çubukları
- [x] çoklu platform desteği (Windows API ve sanal terminal ile, Linux'ta ncurses ile, macOS'ta termios ile)
- [x] arka plan görevleri için çoklu iş parçacığı desteği
- [x] zamanlayıcılar
- [x] fare desteği
- [x] pano desteği
- [x] renk temaları
- [x] Unicode karakter desteği
- [x] önceden tanımlı diyaloglar (mesaj kutusu, giriş kutusu, renk seçici, kaydet & aç diyalogları, klasör gezgini vb.)
- [x] destekleyen terminallerde gerçek renk desteği (piksel başına 24 bit).
📸 Ekran Görüntüleri

👉 Tüm kontrollerin tam demoları için Galeri'ye göz atın!
🖥️ Backend'ler
AppCUI, işletim sistemine bağlı olarak çeşitli backend'leri destekler:
- Windows Konsolu - Win32 düşük seviyeli API'ye dayalı, klasik Windows konsolu için tasarlanmıştır
- Windows VT - ANSI dizilerine dayalı, modern Windows sanal terminalleri için tasarlanmıştır
- NCurses - Linux ortamları için NCurses API'sine dayalıdır
- Termios - macOS için ANSI dizileri ve düşük seviyeli API'lere dayalıdır
- Web Terminali - web uygulamaları için tasarlanmıştır (WebGL tabanlı)
- CrossTerm - crossterm
crate'ine dayalıdır, bir özellik bayrağı ile etkinleştirilir
🚀 Hızlı Başlangıç
Aşağıdakileri Cargo.toml dosyanıza ekleyin:
toml
[dependencies]
appcui = "*"
Daha sonra yeni bir Rust projesi oluşturun ve aşağıdaki kodu ekleyin:
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(()) }
Ya da proc-makroları kullanan daha kompakt bir versiyon:
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::*;Ardından projeyicargo runile çalıştırın. Ekranda başlığıTestolan ve ortasındaHello World !yazan bir pencere görmelisiniz.🧪 Örnekler
AppCUI-rs, başlamanıza yardımcı olmak için bir dizi örnekle birlikte gelir. Bunları examples klasöründe bulabilirsiniz, örnekler arasında:
- Oyunlar: Tic Tac Toe, Yılan, Flappy Bird, Mayın Tarlası, Ram it, PacMan, Satranç, Connect Four, 2048 veya Tetris
- Araçlar: Hesap Makinesi, CSV Görüntüleyici, Sıcaklık Dönüştürücü veya bir Zamanlayıcı
- Animasyonlar: Matrix, Fraktallar veya Spiral
- Kontroller/Bileşenler: Buton, Onay Kutusu, Açılır Kutu, Tarih Seçici, Liste Görünümü, Ağaç Görünümü ve daha fazlası.
- Diyaloglar: Bildirim veya Girdi
🛠️ Daha karmaşık bir örnek
Bir pencere oluşturan ve butona basıldığında bir sayacı artıran bir örnek.
// 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(()) } ``
🛣️ Yol Haritası
- [x] Temel widget seti ve Windows, Linux, macOS desteği
- [x] WebGL desteği
- [ ] OpenGL / SDL / Vulkan desteği
- [ ] Kod vurgulaması için TextArea desteği
🤝 Katkı Sağlama
Katkılar, sorunlar ve özellik talepleri memnuniyetle karşılanır! Başlamak için CONTRIBUTING.md dosyasına göz atın.
GitHub Discussions bölümünde tartışmaya katılın.
--- Tranlated By Open Ai Tx | Last indexed: 2026-06-13 ---