| Crates.io | nappgui |
| lib.rs | nappgui |
| version | 0.2.0 |
| created_at | 2025-06-27 15:37:28.780686+00 |
| updated_at | 2025-07-20 14:17:02.073806+00 |
| description | Rust bindings to NAppGUI |
| homepage | |
| repository | https://github.com/felixmaker/nappgui-rs |
| max_upload_size | |
| id | 1728859 |
| size | 222,767 |
Rust bindings to NAppGUI
NAppGUI is a professional SDK to build cross-platform desktop applications using The C Programming Language (ANSI C90). NAppGUI has built as a lightweight layer on top of the operating system native APIs, that allows create portable programs extremelly fast and small without any external dependency.
See frang75/nappgui_src and its home page for more information.
This crate is under development and is not ready for production use.
Git: for some patches on Windows build
CMake: for building the NAppGui static library
Windows SDK: only needed when using MSVC
use nappgui::osapp::*;
use nappgui::prelude::*;
struct App {
_window: Window,
}
impl AppHandler for App {
fn create() -> Self {
let clicks = std::rc::Rc::new(std::cell::RefCell::new(0));
let panel = Panel::new();
let layout = Layout::new(1, 3);
let label = Label::new("Hello, I'm a label");
let button = PushButton::new("Click Me!");
let text = TextView::new();
layout.set(0, 0, &label);
layout.set(0, 1, &button);
layout.set(0, 2, &text);
layout.hsize(0, 250.0);
layout.vsize(2, 100.0);
layout.margin(5.0);
layout.vmargin(0, 5.0);
layout.vmargin(1, 5.0);
button.on_click(move |_params| {
text.writef(&format!("Button click {}\n", clicks.borrow()));
*clicks.borrow_mut() += 1;
});
panel.layout(&layout);
let window = Window::new(WindowFlags::default());
window.panel(&panel);
window.title("Hello, World!");
window.origin(500.0, 200.0);
window.on_close(|_| finish());
window.show();
Self { _window: window }
}
}
fn main() {
osmain::<App>();
}