https://github.com/tauri-apps/tauri-egui
https://github.com/tauri-apps/tauri-egui
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/tauri-apps/tauri-egui
- Owner: tauri-apps
- License: apache-2.0
- Created: 2022-08-07T11:18:46.000Z (over 3 years ago)
- Default Branch: dev
- Last Pushed: 2024-03-22T10:08:56.000Z (almost 2 years ago)
- Last Synced: 2024-10-29T15:44:12.816Z (about 1 year ago)
- Language: Rust
- Size: 1.3 MB
- Stars: 348
- Watchers: 14
- Forks: 31
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.spdx
Awesome Lists containing this project
README
# tauri-egui
[](https://github.com/tauri-apps/tauri-egui/tree/dev)
[](https://opencollective.com/tauri)
[](https://github.com/tauri-apps/tauri/actions?query=workflow%3A%22test+library%22)
[](https://discord.gg/SpmNs4S)
[](https://tauri.app)
[](https://good-labs.github.io/greater-good-affirmation)
[](https://opencollective.com/tauri)
## Dependency
| Component | Description | Version |
| -------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| [**tauri**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri) | runtime core | [](https://crates.io/crates/tauri) |
| [**egui**](https://github.com/tauri-apps/egui) | immediate mode GUI library for Rust | [](https://crates.io/crates/egui) |
| [**tao**](https://github.com/tauri-apps/tao) | cross-platform application window creation library in Rust | [](https://crates.io/crates/tao) |
| [**glutin**](https://github.com/tauri-apps/glutin) | low-level library for OpenGL context creation, written in pure Rust. | [](https://crates.io/crates/glutin) |
## About tauri-egui
`tauri-egui` is a Tauri plugin for using the [`egui library`](https://github.com/emilk/egui) in a Tauri application via [`glutin`](https://github.com/tauri-apps/glutin). `egui` is a pure Rust GUI library that runs natively, recommended by the Tauri team for secure contexts such as password and secret interfaces.
## Example
```rust
use tauri::Manager;
use tauri_egui::{eframe, egui, EguiPluginBuilder, EguiPluginHandle};
struct LoginApp {
password: String,
on_submit: Box bool + Send>,
}
impl LoginApp {
fn new bool + Send + 'static>(
ctx: &eframe::CreationContext,
on_submit: F,
) -> Self {
Self {
password: "".into(),
on_submit: Box::new(on_submit),
}
}
}
impl eframe::App for LoginApp {
fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
let LoginApp {
password,
on_submit,
} = self;
egui::CentralPanel::default().show(ctx, |ui| {
ui.label("Enter your password");
let textfield = ui.add_sized(
[ui.available_width(), 24.],
egui::TextEdit::singleline(password).password(true),
);
let button = ui.button("Submit");
if (textfield.lost_focus() && ui.input().key_pressed(egui::Key::Enter)) || button.clicked() {
if on_submit(password) {
frame.close();
}
}
});
}
}
fn main() {
tauri::Builder::default()
.setup(|app| {
app.wry_plugin(EguiPluginBuilder::new(app.handle()));
let egui_handle = app.state::();
let native_options = eframe::NativeOptions {
drag_and_drop_support: true,
initial_window_size: Some([1280.0, 1024.0].into()),
..Default::default()
};
let _window = egui_handle
.create_window(
"native-window".to_string(),
Box::new(|cc| Box::new(LoginApp::new(cc, |pwd| pwd == "tauriisawesome"))),
"Login".into(),
native_options,
)
.unwrap();
Ok(())
})
.run(tauri::generate_context!("examples/demo/tauri.conf.json"))
.expect("error while building tauri application");
}
```
## Semver
**tauri-egui** is following [Semantic Versioning 2.0](https://semver.org/).
## Licenses
Code: (c) 2019 - 2022 - The Tauri Programme within The Commons Conservancy.
MIT or MIT/Apache 2.0 where applicable.