* Update to ehttp 0.3.1 with better error messages
* Explain why we are using an old cocoa
* cargo update
❯ cargo update
Updating crates.io index
Updating accesskit v0.11.0 -> v0.11.2
Updating accesskit_consumer v0.15.0 -> v0.15.2
Updating accesskit_macos v0.7.0 -> v0.9.0
Updating accesskit_unix v0.5.0 -> v0.5.2
Updating accesskit_windows v0.14.0 -> v0.14.3
Updating accesskit_winit v0.14.0 -> v0.14.4
Updating addr2line v0.19.0 -> v0.21.0
Removing ahash v0.7.6
Updating aho-corasick v1.0.1 -> v1.1.1
Adding allocator-api2 v0.2.16
Updating android-activity v0.4.1 -> v0.4.3
Adding android-tzdata v0.1.1
Updating anyhow v1.0.71 -> v1.0.75
Updating arboard v3.2.0 -> v3.2.1
Updating arrayvec v0.7.2 -> v0.7.4
Updating async-channel v1.8.0 -> v1.9.0
Updating async-executor v1.5.1 -> v1.5.3
Adding async-fs v1.6.0
Updating async-lock v2.7.0 -> v2.8.0
Adding async-process v1.8.0
Updating async-recursion v1.0.4 -> v1.0.5
Adding async-signal v0.2.1
Updating async-task v4.4.0 -> v4.4.1
Updating async-trait v0.1.68 -> v0.1.73
Adding atomic-waker v1.1.2
Updating backtrace v0.3.67 -> v0.3.69
Adding base64 v0.21.4
Updating bindgen v0.65.1 -> v0.68.1
Updating bitflags v2.3.1 -> v2.4.0
Adding blocking v1.4.0
Updating bumpalo v3.13.0 -> v3.14.0
Updating bytemuck v1.13.1 -> v1.14.0
Updating bytemuck_derive v1.4.1 -> v1.5.0
Updating bytes v1.4.0 -> v1.5.0
Updating calloop v0.10.5 -> v0.10.6
Updating cc v1.0.79 -> v1.0.83
Updating cfg-expr v0.15.1 -> v0.15.5
Updating chrono v0.4.24 -> v0.4.31
Updating cocoa-foundation v0.1.1 -> v0.1.2
Updating concurrent-queue v2.2.0 -> v2.3.0
Updating core-graphics-types v0.1.1 -> v0.1.2
Updating cpufeatures v0.2.7 -> v0.2.9
Updating crossbeam-utils v0.8.15 -> v0.8.16
Adding deranged v0.3.8
Removing dirs v4.0.0
Removing dirs-sys v0.3.7
Updating dlib v0.5.0 -> v0.5.2
Updating dyn-clone v1.0.11 -> v1.0.14
Updating either v1.8.1 -> v1.9.0
Updating enum-map v2.5.0 -> v2.6.3
Updating enum-map-derive v0.11.0 -> v0.14.0
Updating enumflags2 v0.7.7 -> v0.7.8
Updating enumflags2_derive v0.7.7 -> v0.7.8
Updating enumn v0.1.8 -> v0.1.12
Adding equivalent v1.0.1
Updating errno v0.3.1 -> v0.3.3
Adding event-listener v3.0.0
Updating fancy-regex v0.7.1 -> v0.11.0
Adding fastrand v2.0.1
Adding fdeflate v0.3.0
Updating flate2 v1.0.25 -> v1.0.27
Updating form_urlencoded v1.1.0 -> v1.2.0
Updating getrandom v0.2.9 -> v0.2.10
Updating gimli v0.27.2 -> v0.28.0
Updating glutin v0.30.8 -> v0.30.10
Updating glutin_egl_sys v0.5.0 -> v0.5.1
Updating gpu-descriptor v0.2.3 -> v0.2.4
Updating gpu-descriptor-types v0.1.1 -> v0.1.2
Adding hashbrown v0.14.0
Updating hermit-abi v0.3.1 -> v0.3.3
Updating iana-time-zone v0.1.56 -> v0.1.57
Updating idna v0.3.0 -> v0.4.0
Updating image v0.24.6 -> v0.24.7
Adding indexmap v2.0.0
Updating io-lifetimes v1.0.10 -> v1.0.11
Updating is-terminal v0.4.7 -> v0.4.9
Updating itoa v1.0.6 -> v1.0.9
Updating libc v0.2.144 -> v0.2.148
Adding linux-raw-sys v0.4.7
Updating lock_api v0.4.9 -> v0.4.10
Updating log v0.4.17 -> v0.4.20
Updating memchr v2.5.0 -> v2.6.3
Adding memoffset v0.7.1
Updating miniz_oxide v0.6.2 -> v0.7.1
Updating mio v0.8.6 -> v0.8.8
Adding nix v0.26.4
Updating num-traits v0.2.15 -> v0.2.16
Adding num_enum v0.6.1
Adding num_enum_derive v0.6.1
Updating object v0.30.3 -> v0.32.1
Updating once_cell v1.17.1 -> v1.18.0
Updating orbclient v0.3.45 -> v0.3.46
Updating os_str_bytes v6.5.0 -> v6.5.1
Updating parking v2.1.0 -> v2.1.1
Updating parking_lot_core v0.9.7 -> v0.9.8
Updating paste v1.0.12 -> v1.0.14
Updating percent-encoding v2.2.0 -> v2.3.0
Updating pin-project-lite v0.2.9 -> v0.2.13
Adding piper v0.2.1
Updating plist v1.4.0 -> v1.5.0
Updating png v0.17.7 -> v0.17.10
Updating prettyplease v0.2.5 -> v0.2.15
Updating proc-macro2 v1.0.58 -> v1.0.67
Updating profiling v1.0.8 -> v1.0.11
Updating quick-xml v0.26.0 -> v0.29.0
Updating quote v1.0.27 -> v1.0.33
Updating regex v1.8.2 -> v1.9.5
Adding regex-automata v0.3.8
Removing regex-syntax v0.6.29
Removing regex-syntax v0.7.2
Adding regex-syntax v0.7.5
Updating ron v0.8.0 -> v0.8.1
Removing rustix v0.37.19
Adding rustix v0.37.23
Adding rustix v0.38.14
Updating rustls v0.20.8 -> v0.21.7
Adding rustls-webpki v0.100.3
Adding rustls-webpki v0.101.6
Updating ryu v1.0.13 -> v1.0.15
Updating scopeguard v1.1.0 -> v1.2.0
Updating serde v1.0.163 -> v1.0.188
Updating serde_derive v1.0.163 -> v1.0.188
Updating serde_json v1.0.96 -> v1.0.107
Updating serde_repr v0.1.12 -> v0.1.16
Updating serde_spanned v0.6.2 -> v0.6.3
Updating sha1 v0.10.5 -> v0.10.6
Updating shlex v1.1.0 -> v1.2.0
Adding signal-hook-registry v1.4.1
Adding simd-adler32 v0.3.7
Updating siphasher v0.3.10 -> v0.3.11
Updating slab v0.4.8 -> v0.4.9
Updating smallvec v1.10.0 -> v1.11.1
Updating smithay-client-toolkit v0.16.0 -> v0.16.1
Updating strict-num v0.1.0 -> v0.1.1
Updating syn v2.0.16 -> v2.0.37
Updating syntect v5.0.0 -> v5.1.0
Updating system-deps v6.1.0 -> v6.1.1
Updating target-lexicon v0.12.7 -> v0.12.11
Updating tempfile v3.5.0 -> v3.8.0
Updating termcolor v1.2.0 -> v1.3.0
Updating thiserror v1.0.40 -> v1.0.49
Updating thiserror-impl v1.0.40 -> v1.0.49
Removing time v0.1.45
Removing time v0.3.21
Adding time v0.3.29
Updating time-core v0.1.1 -> v0.1.2
Updating time-macros v0.2.9 -> v0.2.15
Updating toml v0.7.4 -> v0.7.8
Updating toml_datetime v0.6.2 -> v0.6.3
Updating toml_edit v0.19.9 -> v0.19.15
Updating tracing-attributes v0.1.24 -> v0.1.26
Updating ttf-parser v0.19.0 -> v0.19.2
Updating tts v0.25.5 -> v0.25.6
Updating typenum v1.16.0 -> v1.17.0
Updating unicode-ident v1.0.8 -> v1.0.12
Updating unicode-width v0.1.10 -> v0.1.11
Updating ureq v2.6.2 -> v2.7.1
Updating url v2.3.1 -> v2.4.1
Updating waker-fn v1.1.0 -> v1.1.1
Updating walkdir v2.3.3 -> v2.4.0
Removing wasi v0.10.0+wasi-snapshot-preview1
Updating wasm-bindgen-futures v0.4.36 -> v0.4.37
Updating webbrowser v0.8.10 -> v0.8.11
Removing webpki v0.22.1
Updating webpki-roots v0.22.6 -> v0.23.1
Updating which v4.4.0 -> v4.4.2
Updating winapi-util v0.1.5 -> v0.1.6
Adding windows v0.51.1
Adding windows-core v0.51.1
Updating windows-implement v0.44.0 -> v0.48.0
Updating windows-interface v0.44.0 -> v0.48.0
Updating windows-targets v0.48.0 -> v0.48.5
Updating windows_aarch64_gnullvm v0.48.0 -> v0.48.5
Updating windows_aarch64_msvc v0.48.0 -> v0.48.5
Updating windows_i686_gnu v0.48.0 -> v0.48.5
Updating windows_i686_msvc v0.48.0 -> v0.48.5
Updating windows_x86_64_gnu v0.48.0 -> v0.48.5
Updating windows_x86_64_gnullvm v0.48.0 -> v0.48.5
Updating windows_x86_64_msvc v0.48.0 -> v0.48.5
Updating winnow v0.4.6 -> v0.5.15
Adding xdg-home v1.0.0
Updating xml-rs v0.8.15 -> v0.8.19
Updating zbus v3.10.0 -> v3.14.1
Updating zbus_macros v3.10.0 -> v3.14.1
Updating zbus_names v2.5.1 -> v2.6.0
Updating zvariant v3.14.0 -> v3.15.0
Updating zvariant_derive v3.14.0 -> v3.15.0
❯ cargo update -p ureq --precise 2.6.2
Updating crates.io index
Downgrading rustls v0.21.7 -> v0.20.9
Removing rustls-webpki v0.100.3
Removing rustls-webpki v0.101.6
Downgrading ureq v2.7.1 -> v2.6.2
Adding webpki v0.22.1
Downgrading webpki-roots v0.23.1 -> v0.22.6
❯ cargo update -p plist --precise 1.4.0
Updating crates.io index
Downgrading plist v1.5.0 -> v1.4.0
Downgrading quick-xml v0.29.0 -> v0.26.0
❯ cargo update -p ron --precise 0.8.0
Updating crates.io index
Removing base64 v0.21.4
Downgrading ron v0.8.1 -> v0.8.0
* Remove unnecessary mut
* Silence over-eager clippy
* Add misisng `'static` lifetime to `run_simple_native`
* ❯ cargo update -p android-activity --precise 0.4.1
Updating crates.io index
Downgrading android-activity v0.4.2 -> v0.4.1
Removing num_enum v0.6.1
Removing num_enum_derive v0.6.1
|
||
|---|---|---|
| .. | ||
| 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.
To get copy-paste working on web, you need to compile with export RUSTFLAGS=--cfg=web_sys_unstable_apis.
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" (eframe is a framework, egui is a library).