egui: An easy-to-use immediate mode GUI library for Rust that runs on the web and natively.
What problem it solves
Rust applications and game engines need a straightforward way to build interactive interfaces without managing persistent widgets, callbacks, and separate GUI state. The library provides one interface that can be used across web and native environments, with integration layers handling input, rendering, and platform concerns.
Key features
Portable web and native interfaces — The same interface code can run on the web or as a native application. The `eframe` framework supports Web, Linux, Mac, Windows, and Android.
Source: README
Immediate-mode application code — Widgets are shown and interacted with directly in application code. This avoids persistent button objects and on-click callbacks while keeping the displayed state current.
Source: README
Engine and platform integration — The library can be integrated where textured triangles can be drawn, including existing game engines. Integrations provide input, consume output, and render the generated mesh.
Source: README
Broad widget and layout support — The library includes common controls, text editing, images, layouts, windows, panels, tooltips, and custom painting. It also supports label text selection and accessibility through AccessKit.
Source: README
Theme, font, and glyph customization — Applications can customize colors, spacing, fonts, and sizes, and the latest release adds system glyph support, including colored emojis and non-Latin scripts. An experimental theme plugin system can customize widget visuals by class.
Source: README
Quick start
Copied verbatim from the project's README.
ui.heading("My egui Application");
ui.horizontal(|ui| {
ui.label("Your name: ");
ui.text_edit_singleline(&mut name);
});
ui.add(egui::Slider::new(&mut age, 0..=120).text("age"));
if ui.button("Increment").clicked() {
age += 1;
}
ui.label(format!("Hello '{name}', age {age}"));
ui.image(egui::include_image!("ferris.png"));Who it may suit
This may suit Rust developers creating interactive applications or adding interfaces to game engines and platforms. It may also suit teams that want the same GUI code to work on the web and natively.
Topics to discuss
Which immediate-mode layout patterns work best for complex interfaces without introducing state management overhead?
How should integrations handle input, rendering, and accessibility across web and native platforms?
Which widgets, theme capabilities, and font workflows should receive priority next?
Written by ReadmeX AI from the project's README, source and public GitHub data; it may contain mistakes.
Read the original README https://github.com/emilk/egui#readme
ReadmeX opened this community for a trending project; it is not run by the project. Maintainers can claim it from the community page.
Comments
…