From 28d3c8e2b54ad13850065d88ef00b1c3af75a1b2 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 5 Feb 2024 14:11:54 +0100 Subject: [PATCH 1/2] Improve README.md --- README.md | 112 +++++++++++++++++--------------------- crates/eframe/README.md | 19 ++++--- media/demo_light_mode.png | Bin 0 -> 76839 bytes 3 files changed, 59 insertions(+), 72 deletions(-) create mode 100644 media/demo_light_mode.png diff --git a/README.md b/README.md index 17f918836b4..2a2145b047a 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,9 @@ egui aims to be the easiest-to-use Rust GUI library, and the simplest way to mak egui can be used anywhere you can draw textured triangles, which means you can easily integrate it into your game engine of choice. +[`eframe`](https://github.com/emilk/egui/tree/master/crates/eframe) is the official egui framework, which supports writing apps for Web, Linux, Mac, Windows, and Android. + + ## Example ``` rust @@ -43,7 +46,9 @@ ui.label(format!("Hello '{name}', age {age}")); ui.image(egui::include_image!("ferris.png")); ``` - +Dark mode +   +Light mode ## Sections: @@ -73,7 +78,7 @@ If you have questions, use [GitHub Discussions](https://github.com/emilk/egui/di ## Demo -[Click to run egui web demo](https://www.egui.rs/#demo) (works in any browser with WASM and WebGL support). Uses [`eframe`](https://github.com/emilk/egui/tree/master/crates/eframe). +[Click to run egui web demo](https://www.egui.rs/#demo) (works in any browser with Wasm and WebGL support). Uses [`eframe`](https://github.com/emilk/egui/tree/master/crates/eframe). To test the demo app locally, run `cargo run --release -p egui_demo_app`. @@ -120,16 +125,17 @@ Still, egui can be used to create professional looking applications, like [the R ### Features -* Widgets: label, text button, hyperlink, checkbox, radio button, slider, draggable value, text editing, combo box, color picker, spinner +* Widgets: label, text button, hyperlink, checkbox, radio button, slider, draggable value, text editing, color picker, spinner * Images * Layouts: horizontal, vertical, columns, automatic wrapping * Text editing: multiline, copy/paste, undo, emoji supports * Windows: move, resize, name, minimize and close. Automatically sized and positioned. -* Regions: resizing, vertical scrolling, collapsing headers (sections) +* Regions: resizing, vertical scrolling, collapsing headers (sections), panels * Rendering: Anti-aliased rendering of lines, circles, text and convex polygons. * Tooltips on hover * Accessibility via [AccessKit](https://accesskit.dev/) -* More +* Label text selection +* And more! @@ -161,25 +167,6 @@ If you are not using Rust, egui is not for you. If you want a GUI that looks nat But if you are writing something interactive in Rust that needs a simple GUI, egui may be for you. -### egui vs Dear ImGui - -The obvious alternative to egui is [`imgui-rs`](https://github.com/Gekkio/imgui-rs), the Rust wrapper around the C++ library [Dear ImGui](https://github.com/ocornut/imgui). Dear ImGui is a great library (and the main inspiration for egui), with a lot more features and polish. However, egui provides some benefits for Rust users: - -* egui is pure Rust -* egui is easily compiled to WASM -* egui lets you use native Rust string types (`imgui-rs` forces you to use annoying macros and wrappers for zero-terminated strings) -* [Writing your own widgets in egui is simple](https://github.com/emilk/egui/blob/master/crates/egui_demo_lib/src/demo/toggle_switch.rs) - -egui also tries to improve your experience in other small ways: - -* Windows are automatically sized based on their contents -* Windows are automatically positioned to not overlap with each other -* Some subtle animations make egui come alive - -So in summary: - -* egui: pure Rust, new, exciting, work in progress -* Dear ImGui: feature rich, well tested, cumbersome Rust integration ## Integrations @@ -189,7 +176,7 @@ egui itself doesn't know or care on what OS it is running or how to render thing An integration needs to do the following each frame: * **Input**: Gather input (mouse, touches, keyboard, screen size, etc) and give it to egui -* Run the application code +* Call into the application GUI code * **Output**: Handle egui output (cursor changes, paste, texture allocations, …) * **Painting**: Render the triangle mesh egui produces (see [OpenGL example](https://github.com/emilk/egui/blob/master/crates/egui_glow/src/painter.rs)) @@ -197,41 +184,40 @@ An integration needs to do the following each frame: These are the official egui integrations: -* [`eframe`](https://github.com/emilk/egui/tree/master/crates/eframe) for compiling the same app to web/wasm and desktop/native. Uses `egui-winit` and `egui_glow` or `egui-wgpu`. -* [`egui_glow`](https://github.com/emilk/egui/tree/master/crates/egui_glow) for rendering egui with [glow](https://github.com/grovesNL/glow) on native and web, and for making native apps. -* [`egui-wgpu`](https://github.com/emilk/egui/tree/master/crates/egui-wgpu) for [wgpu](https://crates.io/crates/wgpu) (WebGPU API). -* [`egui-winit`](https://github.com/emilk/egui/tree/master/crates/egui-winit) for integrating with [winit](https://github.com/rust-windowing/winit). +* [`eframe`](https://github.com/emilk/egui/tree/master/crates/eframe) for compiling the same app to web/wasm and desktop/native. Uses `egui-winit` and `egui_glow` or `egui-wgpu` +* [`egui_glow`](https://github.com/emilk/egui/tree/master/crates/egui_glow) for rendering egui with [glow](https://github.com/grovesNL/glow) on native and web, and for making native apps +* [`egui-wgpu`](https://github.com/emilk/egui/tree/master/crates/egui-wgpu) for [wgpu](https://crates.io/crates/wgpu) (WebGPU API) +* [`egui-winit`](https://github.com/emilk/egui/tree/master/crates/egui-winit) for integrating with [winit](https://github.com/rust-windowing/winit) ### 3rd party integrations -* [`amethyst_egui`](https://github.com/jgraef/amethyst_egui) for [the Amethyst game engine](https://amethyst.rs/). -* [`egui-ash`](https://github.com/MatchaChoco010/egui-ash) for [`ash`](https://github.com/ash-rs/ash) (a very lightweight wrapper around Vulkan). -* [`bevy_egui`](https://github.com/mvlabat/bevy_egui) for [the Bevy game engine](https://bevyengine.org/). -* [`egui_glfw_gl`](https://github.com/cohaereo/egui_glfw_gl) for [GLFW](https://crates.io/crates/glfw). -* [`egui_glium`](https://github.com/fayalalebrun/egui_glium) for compiling native apps with [Glium](https://github.com/glium/glium). -* [`egui-glutin-gl`](https://github.com/h3r2tic/egui-glutin-gl/) for [glutin](https://crates.io/crates/glutin). -* [`egui_sdl2_gl`](https://crates.io/crates/egui_sdl2_gl) for [SDL2](https://crates.io/crates/sdl2). -* [`egui_sdl2_platform`](https://github.com/ComLarsic/egui_sdl2_platform) for [SDL2](https://crates.io/crates/sdl2). -* [`egui_vulkano`](https://github.com/derivator/egui_vulkano) for [Vulkano](https://github.com/vulkano-rs/vulkano). -* [`egui_winit_vulkano`](https://github.com/hakolao/egui_winit_vulkano) for [Vulkano](https://github.com/vulkano-rs/vulkano). -* [`egui-macroquad`](https://github.com/optozorax/egui-macroquad) for [macroquad](https://github.com/not-fl3/macroquad). -* [`egui-miniquad`](https://github.com/not-fl3/egui-miniquad) for [Miniquad](https://github.com/not-fl3/miniquad). -* [`egui_speedy2d`](https://github.com/heretik31/egui_speedy2d) for [Speedy2d](https://github.com/QuantumBadger/Speedy2D). -* [`egui-tetra`](https://crates.io/crates/egui-tetra) for [Tetra](https://crates.io/crates/tetra), a 2D game framework. -* [`egui-winit-ash-integration`](https://github.com/MatchaChoco010/egui-winit-ash-integration) for [winit](https://github.com/rust-windowing/winit) and [ash](https://github.com/MaikKlein/ash). -* [`fltk-egui`](https://crates.io/crates/fltk-egui) for [fltk-rs](https://github.com/fltk-rs/fltk-rs). -* [`ggegui`](https://github.com/NemuiSen/ggegui) for the [ggez](https://ggez.rs/) game framework. -* [`godot-egui`](https://github.com/setzer22/godot-egui) for [godot-rust](https://github.com/godot-rust/godot-rust). -* [`nannou_egui`](https://github.com/nannou-org/nannou/tree/master/nannou_egui) for [nannou](https://nannou.cc). -* [`notan_egui`](https://github.com/Nazariglez/notan/tree/main/crates/notan_egui) for [notan](https://github.com/Nazariglez/notan). -* [`screen-13-egui`](https://github.com/attackgoat/screen-13/tree/master/contrib/screen-13-egui) for [Screen 13](https://github.com/attackgoat/screen-13). -* [`egui_skia`](https://github.com/lucasmerlin/egui_skia) for [skia](https://github.com/rust-skia/rust-skia/tree/master/skia-safe). -* [`smithay-egui`](https://github.com/Smithay/smithay-egui) for [smithay](https://github.com/Smithay/smithay/). -* [`tauri-egui`](https://github.com/tauri-apps/tauri-egui) for [tauri](https://github.com/tauri-apps/tauri). - -Missing an integration for the thing you're working on? Create one, it's easy! +* [`amethyst_egui`](https://github.com/jgraef/amethyst_egui) for [the Amethyst game engine](https://amethyst.rs/) +* [`egui-ash`](https://github.com/MatchaChoco010/egui-ash) for [`ash`](https://github.com/ash-rs/ash) (a very lightweight wrapper around Vulkan) +* [`bevy_egui`](https://github.com/mvlabat/bevy_egui) for [the Bevy game engine](https://bevyengine.org/) +* [`egui_glfw_gl`](https://github.com/cohaereo/egui_glfw_gl) for [GLFW](https://crates.io/crates/glfw) +* [`egui_glium`](https://github.com/fayalalebrun/egui_glium) for compiling native apps with [Glium](https://github.com/glium/glium) +* [`egui-glutin-gl`](https://github.com/h3r2tic/egui-glutin-gl/) for [glutin](https://crates.io/crates/glutin) +* [`egui_sdl2_gl`](https://crates.io/crates/egui_sdl2_gl) for [SDL2](https://crates.io/crates/sdl2) +* [`egui_sdl2_platform`](https://github.com/ComLarsic/egui_sdl2_platform) for [SDL2](https://crates.io/crates/sdl2) +* [`egui_vulkano`](https://github.com/derivator/egui_vulkano) for [Vulkano](https://github.com/vulkano-rs/vulkano) +* [`egui_winit_vulkano`](https://github.com/hakolao/egui_winit_vulkano) for [Vulkano](https://github.com/vulkano-rs/vulkano) +* [`egui-macroquad`](https://github.com/optozorax/egui-macroquad) for [macroquad](https://github.com/not-fl3/macroquad) +* [`egui-miniquad`](https://github.com/not-fl3/egui-miniquad) for [Miniquad](https://github.com/not-fl3/miniquad) +* [`egui_speedy2d`](https://github.com/heretik31/egui_speedy2d) for [Speedy2d](https://github.com/QuantumBadger/Speedy2D) +* [`egui-tetra`](https://crates.io/crates/egui-tetra) for [Tetra](https://crates.io/crates/tetra), a 2D game framework +* [`egui-winit-ash-integration`](https://github.com/MatchaChoco010/egui-winit-ash-integration) for [winit](https://github.com/rust-windowing/winit) and [ash](https://github.com/MaikKlein/ash) +* [`fltk-egui`](https://crates.io/crates/fltk-egui) for [fltk-rs](https://github.com/fltk-rs/fltk-rs) +* [`ggegui`](https://github.com/NemuiSen/ggegui) for the [ggez](https://ggez.rs/) game framework +* [`godot-egui`](https://github.com/setzer22/godot-egui) for [godot-rust](https://github.com/godot-rust/godot-rust) +* [`nannou_egui`](https://github.com/nannou-org/nannou/tree/master/nannou_egui) for [nannou](https://nannou.cc) +* [`notan_egui`](https://github.com/Nazariglez/notan/tree/main/crates/notan_egui) for [notan](https://github.com/Nazariglez/notan) +* [`screen-13-egui`](https://github.com/attackgoat/screen-13/tree/master/contrib/screen-13-egui) for [Screen 13](https://github.com/attackgoat/screen-13) +* [`egui_skia`](https://github.com/lucasmerlin/egui_skia) for [skia](https://github.com/rust-skia/rust-skia/tree/master/skia-safe) +* [`smithay-egui`](https://github.com/Smithay/smithay-egui) for [smithay](https://github.com/Smithay/smithay/) +* [`tauri-egui`](https://github.com/tauri-apps/tauri-egui) for [tauri](https://github.com/tauri-apps/tauri) ### Writing your own egui integration +Missing an integration for the thing you're working on? Create one, it's easy! See . @@ -292,12 +278,12 @@ Overall, ID handling is a rare inconvenience, and not a big disadvantage. Also see [GitHub Discussions](https://github.com/emilk/egui/discussions/categories/q-a). ### Can I use `egui` with non-latin characters? -Yes! But you need to install your own font (`.ttf` or `.otf`) using `Context::set_fonts`. +Yes! But you need to install your own font (`.ttf` or `.otf`) using [`Context::set_fonts`](https://docs.rs/egui/latest/egui/struct.Context.html#method.set_fonts). ### Can I customize the look of egui? Yes! You can customize the colors, spacing, fonts and sizes of everything using `Context::set_style`. -This is not yet as powerful as say CSS, [but this is going to improve soon](https://github.com/emilk/egui/issues/3284). +This is not yet as powerful as say CSS, [but this is going to improve](https://github.com/emilk/egui/issues/3284). Here is an example (from https://github.com/a-liashenko/TinyPomodoro): @@ -311,9 +297,9 @@ If you call `.await` in your GUI code, the UI will freeze, which is very bad UX. * [`eventuals::Eventual`](https://docs.rs/eventuals/latest/eventuals/struct.Eventual.html) * [`tokio::sync::watch::channel`](https://docs.rs/tokio/latest/tokio/sync/watch/fn.channel.html) -### How to do cross-platform file dialogs? +### How to I create a file dialog? -The async version of [rfd](https://docs.rs/rfd/latest/rfd/) supports both native and WASM. See example app here https://github.com/woelper/egui_pick_file which also has a demo available via [gitub pages](https://woelper.github.io/egui_pick_file/). +The async version of [rfd](https://docs.rs/rfd/latest/rfd/) supports both native and Wasm. See example app here https://github.com/woelper/egui_pick_file which also has a demo available via [gitub pages](https://woelper.github.io/egui_pick_file/). ### What about accessibility, such as screen readers? egui includes optional support for [AccessKit](https://accesskit.dev/), which currently implements the native accessibility APIs on Windows and macOS. This feature is enabled by default in eframe. For platforms that AccessKit doesn't yet support, including web, there is an experimental built-in screen reader; in [the web demo](https://www.egui.rs/#demo) you can enable it in the "Backend" tab. @@ -328,12 +314,12 @@ That is the job of *the integration* or *backend*. It is common to use `egui` from a game engine (using e.g. [`bevy_egui`](https://docs.rs/bevy_egui)), but you can also use `egui` stand-alone using `eframe`. `eframe` has integration for web and native, and handles input and rendering. -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). +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). ### How do I render 3D stuff in an egui area? There are multiple ways to combine egui with 3D. The simplest way is to use a 3D library and have egui sit on top of the 3D view. See for instance [`bevy_egui`](https://github.com/mvlabat/bevy_egui) or [`three-d`](https://github.com/asny/three-d). -If you want to embed 3D into an egui view there are two options. +If you want to embed 3D into an egui view there are two options: #### `Shape::Callback` Example: @@ -354,9 +340,9 @@ Examples: All coordinates are in screen space coordinates, with (0, 0) in the top left corner -All coordinates are in "points" which may consist of many physical pixels. +All coordinates are in logical "points" which may consist of many physical pixels. -All colors have premultiplied alpha. +All colors have premultiplied alpha, unless otherwise stated. egui uses the builder pattern for construction widgets. For instance: `ui.add(Label::new("Hello").text_color(RED));` I am not a big fan of the builder pattern (it is quite verbose both in implementation and in use) but until Rust has named, default arguments it is the best we can do. To alleviate some of the verbosity there are common-case helper functions, like `ui.label("Hello");`. diff --git a/crates/eframe/README.md b/crates/eframe/README.md index 15cdf72d39a..ac57d999844 100644 --- a/crates/eframe/README.md +++ b/crates/eframe/README.md @@ -5,7 +5,7 @@ ![MIT](https://img.shields.io/badge/license-MIT-blue.svg) ![Apache](https://img.shields.io/badge/license-Apache-blue.svg) -`eframe` is the official framework library for writing apps using [`egui`](https://github.com/emilk/egui). The app can be compiled both to run natively (cross platform) or be compiled to a web app (using WASM). +`eframe` is the official framework library for writing apps using [`egui`](https://github.com/emilk/egui). The app can be compiled both to run natively (for Linux, Mac, Windows, and Android) or as a web app (using [Wasm](https://en.wikipedia.org/wiki/WebAssembly)). To get started, see the [examples](https://github.com/emilk/egui/tree/master/examples). To learn how to set up `eframe` for web and native, go to and follow the instructions there! @@ -36,15 +36,15 @@ To get copy-paste working on web, you need to compile with `export RUSTFLAGS=--c You can also use `egui_glow` and [`winit`](https://github.com/rust-windowing/winit) to build your own app as demonstrated in . -## Problems with running egui on the web -`eframe` uses WebGL (via [`glow`](https://crates.io/crates/glow)) and WASM, and almost nothing else from the web tech stack. This has some benefits, but also produces some challenges and serious downsides. +## Limitations when running egui on the web +`eframe` uses WebGL (via [`glow`](https://crates.io/crates/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 `eframe` fakes 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. +* 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). `egui` supports [AccessKit](https://github.com/AccessKit/accesskit), but as of early 2024, AccessKit lacks a Web backend. 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). @@ -52,12 +52,13 @@ The suggested use for `eframe` are for web apps where performance and responsive ## 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: +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: -* Audio: [`cpal`](https://github.com/RustAudio/cpal). -* HTTP client: [`ehttp`](https://github.com/emilk/ehttp) and [`reqwest`](https://github.com/seanmonstar/reqwest). -* Time: [`chrono`](https://github.com/chronotope/chrono). -* WebSockets: [`ewebsock`](https://github.com/rerun-io/ewebsock). +* Audio: [`cpal`](https://github.com/RustAudio/cpal) +* File dialogs: [rfd](https://docs.rs/rfd/latest/rfd/) +* HTTP client: [`ehttp`](https://github.com/emilk/ehttp) and [`reqwest`](https://github.com/seanmonstar/reqwest) +* Time: [`chrono`](https://github.com/chronotope/chrono) +* WebSockets: [`ewebsock`](https://github.com/rerun-io/ewebsock) ## Name diff --git a/media/demo_light_mode.png b/media/demo_light_mode.png new file mode 100644 index 0000000000000000000000000000000000000000..993b880abc36fd5bba782382d7dc28481a21c2fb GIT binary patch literal 76839 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 literal 0 HcmV?d00001 From d0182655875f2d17ca1242e01dd61158d9feb43e Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 5 Feb 2024 14:35:45 +0100 Subject: [PATCH 2/2] Wait with showing tooltip until mouse has been still for 300ms (#3977) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit You can change this with `style.interaction.tooltip_delay§ --- crates/egui/src/input_state.rs | 4 ++-- crates/egui/src/response.rs | 17 ++++++++++------- crates/egui/src/style.rs | 4 ++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/crates/egui/src/input_state.rs b/crates/egui/src/input_state.rs index 1a31c9dd069..0de78a43752 100644 --- a/crates/egui/src/input_state.rs +++ b/crates/egui/src/input_state.rs @@ -886,8 +886,8 @@ impl PointerState { /// How long has it been (in seconds) since the pointer was last moved? #[inline(always)] - pub fn time_since_last_movement(&self) -> f64 { - self.time - self.last_move_time + pub fn time_since_last_movement(&self) -> f32 { + (self.time - self.last_move_time) as f32 } /// Was any pointer button pressed (`!down -> down`) this frame? diff --git a/crates/egui/src/response.rs b/crates/egui/src/response.rs index bc252052ae4..2b55a9d53d6 100644 --- a/crates/egui/src/response.rs +++ b/crates/egui/src/response.rs @@ -499,13 +499,16 @@ impl Response { } } - if !self.is_tooltip_open() - && self.ctx.input(|i| i.pointer.time_since_last_movement()) - < self.ctx.style().interaction.tooltip_delay - { - // Keep waiting until the mouse has been still for a while - self.ctx.request_repaint(); - return false; + if !self.is_tooltip_open() { + let time_til_tooltip = self.ctx.style().interaction.tooltip_delay + - self.ctx.input(|i| i.pointer.time_since_last_movement()); + + if 0.0 < time_til_tooltip { + // Wait until the mouse has been still for a while + self.ctx + .request_repaint_after(std::time::Duration::from_secs_f32(time_til_tooltip)); + return false; + } } // We don't want tooltips of things while we are dragging them, diff --git a/crates/egui/src/style.rs b/crates/egui/src/style.rs index 70e65261df6..645a7d188f2 100644 --- a/crates/egui/src/style.rs +++ b/crates/egui/src/style.rs @@ -719,7 +719,7 @@ pub struct Interaction { pub show_tooltips_only_when_still: bool, /// Delay in seconds before showing tooltips after the mouse stops moving - pub tooltip_delay: f64, + pub tooltip_delay: f32, /// Can you select the text on a [`crate::Label`] by default? pub selectable_labels: bool, @@ -1128,7 +1128,7 @@ impl Default for Interaction { resize_grab_radius_side: 5.0, resize_grab_radius_corner: 10.0, show_tooltips_only_when_still: true, - tooltip_delay: 0.0, + tooltip_delay: 0.3, selectable_labels: true, multi_widget_text_select: true, }