* cargo update
Updating crates.io index
Updating ab_glyph v0.2.20 -> v0.2.21
Updating aho-corasick v0.7.20 -> v1.0.1
Updating android-activity v0.4.0 -> v0.4.1
Updating anyhow v1.0.69 -> v1.0.71
Updating arrayref v0.3.6 -> v0.3.7
Updating async-broadcast v0.5.0 -> v0.5.1
Updating async-executor v1.5.0 -> v1.5.1
Updating async-io v1.12.0 -> v1.13.0
Updating async-lock v2.6.0 -> v2.7.0
Updating async-recursion v1.0.2 -> v1.0.4
Updating async-task v4.3.0 -> v4.4.0
Updating async-trait v0.1.64 -> v0.1.68
Updating atomic_refcell v0.1.9 -> v0.1.10
Adding base64 v0.21.1
Updating bindgen v0.64.0 -> v0.65.1
Updating bitflags v2.1.0 -> v2.3.1
Updating block-buffer v0.10.3 -> v0.10.4
Updating bumpalo v3.12.0 -> v3.13.0
Updating bytemuck v1.13.0 -> v1.13.1
Updating bytemuck_derive v1.4.0 -> v1.4.1
Updating cfg-expr v0.11.0 -> v0.15.1
Updating chrono v0.4.23 -> v0.4.24
Updating ciborium v0.2.0 -> v0.2.1
Updating ciborium-io v0.2.0 -> v0.2.1
Updating ciborium-ll v0.2.0 -> v0.2.1
Updating clang-sys v1.4.0 -> v1.6.1
Updating clap v3.2.23 -> v3.2.25
Updating cocoa-foundation v0.1.0 -> v0.1.1
Updating concurrent-queue v2.1.0 -> v2.2.0
Updating core-foundation-sys v0.8.3 -> v0.8.4
Updating cpufeatures v0.2.5 -> v0.2.7
Updating crossbeam-utils v0.8.14 -> v0.8.15
Removing cxx v1.0.89
Removing cxx-build v1.0.89
Removing cxxbridge-flags v1.0.89
Removing cxxbridge-macro v1.0.89
Updating digest v0.10.6 -> v0.10.7
Updating dyn-clone v1.0.10 -> v1.0.11
Updating enum-map v2.4.2 -> v2.5.0
Updating enumn v0.1.6 -> v0.1.8
Removing errno v0.2.8
Updating fastrand v1.8.0 -> v1.9.0
Adding fdeflate v0.3.0
Updating flate2 v1.0.25 -> v1.0.26
Updating futures-core v0.3.26 -> v0.3.28
Updating futures-io v0.3.26 -> v0.3.28
Updating futures-lite v1.12.0 -> v1.13.0
Updating futures-sink v0.3.26 -> v0.3.28
Updating futures-task v0.3.26 -> v0.3.28
Updating futures-util v0.3.26 -> v0.3.28
Updating generic-array v0.14.6 -> v0.14.7
Updating getrandom v0.2.8 -> v0.2.9
Updating gimli v0.27.1 -> v0.27.2
Updating glutin v0.30.4 -> v0.30.8
Updating glutin_egl_sys v0.4.0 -> v0.5.0
Updating gpu-alloc v0.5.3 -> v0.5.4
Adding home v0.5.5
Updating iana-time-zone v0.1.53 -> v0.1.56
Updating iana-time-zone-haiku v0.1.1 -> v0.1.2
Updating image v0.24.5 -> v0.24.6
Updating indexmap v1.9.2 -> v1.9.3
Updating io-lifetimes v1.0.6 -> v1.0.10
Updating itoa v1.0.5 -> v1.0.6
Updating jni v0.20.0 -> v0.21.1
Updating jobserver v0.1.25 -> v0.1.26
Updating js-sys v0.3.61 -> v0.3.63
Updating libc v0.2.139 -> v0.2.144
Removing link-cplusplus v1.0.8
Removing linux-raw-sys v0.1.4
Removing linux-raw-sys v0.3.2
Adding linux-raw-sys v0.3.8
Updating memmap2 v0.5.8 -> v0.5.10
Adding miniz_oxide v0.7.1
Updating mio v0.8.5 -> v0.8.6
Updating naga v0.12.0 -> v0.12.1
Removing nom8 v0.2.0
Updating num_enum v0.5.9 -> v0.5.11
Updating num_enum_derive v0.5.9 -> v0.5.11
Updating objc2 v0.3.0-beta.3 -> v0.3.0-beta.3.patch-leaks.3
Updating once_cell v1.17.0 -> v1.17.1
Updating orbclient v0.3.42 -> v0.3.45
Updating ordered-stream v0.1.4 -> v0.2.0
Updating os_str_bytes v6.4.1 -> v6.5.0
Updating owned_ttf_parser v0.18.1 -> v0.19.0
Updating parking v2.0.0 -> v2.1.0
Updating paste v1.0.11 -> v1.0.12
Updating pkg-config v0.3.26 -> v0.3.27
Updating plist v1.4.0 -> v1.4.3
Updating png v0.17.7 -> v0.17.8
Updating polling v2.5.2 -> v2.8.0
Adding prettyplease v0.2.5
Updating proc-macro-crate v1.3.0 -> v1.3.1
Updating proc-macro2 v1.0.56 -> v1.0.58
Updating profiling v1.0.7 -> v1.0.8
Updating puffin v0.14.2 -> v0.14.3
Updating quick-xml v0.26.0 -> v0.28.2
Updating quote v1.0.26 -> v1.0.27
Updating range-alloc v0.1.2 -> v0.1.3
Updating redox_syscall v0.3.4 -> v0.3.5
Updating regex v1.7.1 -> v1.8.2
Removing regex-syntax v0.6.28
Adding regex-syntax v0.6.29
Adding regex-syntax v0.7.2
Updating rfd v0.11.0 -> v0.11.4
Updating rgb v0.8.35 -> v0.8.36
Updating rustc-demangle v0.1.21 -> v0.1.23
Removing rustix v0.36.9
Removing rustix v0.37.3
Adding rustix v0.37.19
Updating ruzstd v0.3.0 -> v0.3.1
Updating ryu v1.0.12 -> v1.0.13
Removing scratch v1.0.3
Updating sctk-adwaita v0.5.3 -> v0.5.4
Updating serde v1.0.152 -> v1.0.163
Updating serde_derive v1.0.152 -> v1.0.163
Updating serde_json v1.0.92 -> v1.0.96
Updating serde_repr v0.1.10 -> v0.1.12
Adding serde_spanned v0.6.2
Adding simd-adler32 v0.3.5
Updating slab v0.4.7 -> v0.4.8
Updating socket2 v0.4.7 -> v0.4.9
Removing syn v1.0.107
Removing syn v2.0.15
Adding syn v1.0.109
Adding syn v2.0.16
Updating system-deps v6.0.3 -> v6.1.0
Adding target-lexicon v0.12.7
Updating tempfile v3.4.0 -> v3.5.0
Updating thiserror v1.0.38 -> v1.0.40
Updating thiserror-impl v1.0.38 -> v1.0.40
Updating time v0.3.17 -> v0.3.21
Updating time-core v0.1.0 -> v0.1.1
Updating time-macros v0.2.6 -> v0.2.9
Updating tiny-skia v0.8.3 -> v0.8.4
Updating tiny-skia-path v0.8.3 -> v0.8.4
Updating toml v0.5.11 -> v0.7.4
Updating toml_datetime v0.5.1 -> v0.6.2
Updating toml_edit v0.18.1 -> v0.19.9
Updating tracing-attributes v0.1.23 -> v0.1.24
Updating tracing-core v0.1.30 -> v0.1.31
Updating ttf-parser v0.18.1 -> v0.19.0
Updating tts v0.25.0 -> v0.25.5
Updating unicode-bidi v0.3.10 -> v0.3.13
Updating unicode-ident v1.0.6 -> v1.0.8
Updating walkdir v2.3.2 -> v2.3.3
Updating wasm-bindgen-futures v0.4.34 -> v0.4.36
Updating web-sys v0.3.61 -> v0.3.63
Updating webbrowser v0.8.7 -> v0.8.10
Removing wepoll-ffi v0.1.2
Updating windows v0.43.0 -> v0.48.0
Removing windows-sys v0.42.0
Updating windows-targets v0.42.1 -> v0.42.2
Updating windows_aarch64_gnullvm v0.42.1 -> v0.42.2
Updating windows_aarch64_msvc v0.42.1 -> v0.42.2
Updating windows_i686_gnu v0.42.1 -> v0.42.2
Updating windows_i686_msvc v0.42.1 -> v0.42.2
Updating windows_x86_64_gnu v0.42.1 -> v0.42.2
Updating windows_x86_64_gnullvm v0.42.1 -> v0.42.2
Updating windows_x86_64_msvc v0.42.1 -> v0.42.2
Updating winit v0.28.1 -> v0.28.6
Adding winnow v0.4.6
Updating xml-rs v0.8.4 -> v0.8.13
Updating zbus v3.9.0 -> v3.10.0
Updating zbus_macros v3.9.0 -> v3.10.0
Updating zbus_names v2.5.0 -> v2.5.1
Updating zstd-sys v2.0.6+zstd.1.5.2 -> v2.0.8+zstd.1.5.5
Updating zvariant v3.10.0 -> v3.14.0
Updating zvariant_derive v3.10.0 -> v3.14.0
Adding zvariant_utils v1.0.1
* Downgrade flate2 and png to avoid duplicated deps
* downgrade plist to avoid duplication of base64 crate
* Allow license `Apache-2.0 WITH LLVM-exception`
* Update to puffin 0.15
|
||
|---|---|---|
| .. | ||
| data | ||
| src | ||
| CHANGELOG.md | ||
| Cargo.toml | ||
| README.md | ||
README.md
eframe: the egui framework
eframe is the official framework library for writing apps using egui. The app can be compiled both to run natively (cross platform) or be compiled to a web app (using WASM).
To get started, see the examples.
To learn how to set up eframe for web and native, go to https://github.com/emilk/eframe_template/ and follow the instructions there!
There is also a tutorial video at https://www.youtube.com/watch?v=NtUkr_z7l84.
For how to use egui, see the egui docs.
eframe uses egui_glow for rendering, and on native it uses egui-winit.
To use on Linux, first run:
sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev
You need to either use edition = "2021", or set resolver = "2" in the [workspace] section of your to-level Cargo.toml. See this link for more info.
You can opt-in to the using egui_wgpu for rendering by enabling the wgpu feature and setting NativeOptions::renderer to Renderer::Wgpu.
Alternatives
eframe is not the only way to write an app using egui! You can also try egui-miniquad, bevy_egui, egui_sdl2_gl, and others.
You can also use egui_glow and winit to build your own app as demonstrated in https://github.com/emilk/egui/blob/master/crates/egui_glow/examples/pure_glow.rs.
Problems with running egui on the web
eframe uses WebGL (via glow) and WASM, and almost nothing else from the web tech stack. This has some benefits, but also produces some challenges and serious downsides.
- Rendering: Getting pixel-perfect rendering right on the web is very difficult.
- Search: you cannot search an egui web page like you would a normal web page.
- Bringing up an on-screen keyboard on mobile: there is no JS function to do this, so
eframefakes it by adding some invisible DOM elements. It doesn't always work. - Mobile text editing is not as good as for a normal web app.
- Accessibility: There is an experimental screen reader for
eframe, but it has to be enabled explicitly. There is no JS function to ask "Does the user want a screen reader?" (and there should probably not be such a function, due to user tracking/integrity concerns). - No integration with browser settings for colors and fonts.
In many ways, eframe is trying to make the browser do something it wasn't designed to do (though there are many things browser vendors could do to improve how well libraries like egui work).
The suggested use for eframe are for web apps where performance and responsiveness are more important than accessibility and mobile text editing.
Companion crates
Not all rust crates work when compiled to WASM, but here are some useful crates have been designed to work well both natively and as WASM:
Name
The frame in eframe stands both for the frame in which your egui app resides and also for "framework" (frame is a framework, egui is a library).