diff --git a/crates/bevy_window/Cargo.toml b/crates/bevy_window/Cargo.toml index 2bc7df1db742b..65c98813ef35b 100644 --- a/crates/bevy_window/Cargo.toml +++ b/crates/bevy_window/Cargo.toml @@ -14,6 +14,7 @@ bevy_app = { path = "../bevy_app", version = "0.5.0" } bevy_math = { path = "../bevy_math", version = "0.5.0" } bevy_utils = { path = "../bevy_utils", version = "0.5.0" } raw-window-handle = "0.4.2" +once_cell = "1.9.0" # other diff --git a/crates/bevy_window/src/window.rs b/crates/bevy_window/src/window.rs index 8ea6a02770a4e..17decba66801a 100644 --- a/crates/bevy_window/src/window.rs +++ b/crates/bevy_window/src/window.rs @@ -1,5 +1,6 @@ use bevy_math::{DVec2, IVec2, Vec2}; use bevy_utils::{tracing::warn, Uuid}; +use once_cell::sync::Lazy; use raw_window_handle::RawWindowHandle; #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] @@ -216,7 +217,7 @@ impl Window { resize_constraints: window_descriptor.resize_constraints, scale_factor_override: window_descriptor.scale_factor_override, backend_scale_factor: scale_factor, - title: window_descriptor.title.clone(), + title: window_descriptor.title_or_default().to_owned(), vsync: window_descriptor.vsync, resizable: window_descriptor.resizable, decorations: window_descriptor.decorations, @@ -540,6 +541,7 @@ pub struct WindowDescriptor { pub position: Option, pub resize_constraints: WindowResizeConstraints, pub scale_factor_override: Option, + /// For reading, prefer title_or_default pub title: String, pub vsync: bool, pub resizable: bool, @@ -559,10 +561,27 @@ pub struct WindowDescriptor { pub canvas: Option, } +static DEFAULT_WINDOW_TITLE: Lazy = Lazy::new(|| { + std::env::current_exe() + .ok() + .and_then(|it| Some(format!("{} - bevy", it.file_stem()?.to_string_lossy()))) + .unwrap_or_else(|| "bevy".to_string()) +}); + +impl WindowDescriptor { + pub fn title_or_default(&self) -> &str { + if self.title.is_empty() { + &DEFAULT_WINDOW_TITLE + } else { + &self.title + } + } +} + impl Default for WindowDescriptor { fn default() -> Self { WindowDescriptor { - title: "bevy".to_string(), + title: "".to_string(), width: 1280., height: 720., position: None, diff --git a/crates/bevy_winit/src/winit_windows.rs b/crates/bevy_winit/src/winit_windows.rs index db4d58b997347..45e84f9e90594 100644 --- a/crates/bevy_winit/src/winit_windows.rs +++ b/crates/bevy_winit/src/winit_windows.rs @@ -103,7 +103,8 @@ impl WinitWindows { }; #[allow(unused_mut)] - let mut winit_window_builder = winit_window_builder.with_title(&window_descriptor.title); + let mut winit_window_builder = + winit_window_builder.with_title(window_descriptor.title_or_default()); #[cfg(target_arch = "wasm32")] {