From 6950600bddd4c5dd60cab4ba6b086344f0b25daa Mon Sep 17 00:00:00 2001 From: Revertron Date: Tue, 28 Oct 2025 13:24:34 +0100 Subject: [PATCH] On some Linux machines ALFIS is unable to get primary monitor (what do you expect from Linux?). Fixed that. --- src/web_ui.rs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/web_ui.rs b/src/web_ui.rs index 04aa7bb..b02481c 100644 --- a/src/web_ui.rs +++ b/src/web_ui.rs @@ -44,24 +44,34 @@ pub fn run_interface(context: Arc>, miner: Arc>) { let event_loop = EventLoopBuilder::::with_user_event().build(); let proxy = event_loop.create_proxy(); - // Get primary monitor and calculate center position - let primary_monitor = event_loop.primary_monitor().unwrap(); - let monitor_size = primary_monitor.size(); - let monitor_position = primary_monitor.position(); - let window_size = tao::dpi::LogicalSize::new(1024, 720); - let scaled = window_size.to_physical::(primary_monitor.scale_factor()); - let center_x = monitor_position.x + (monitor_size.width as i32 - scaled.width) / 2; - let center_y = monitor_position.y + (monitor_size.height as i32 - scaled.height) / 2; + // Get primary monitor and calculate center position + let position = match event_loop.primary_monitor() { + Some(monitor) => { + let monitor_size = monitor.size(); + let monitor_position = monitor.position(); - let window = WindowBuilder::new() + let scaled = window_size.to_physical::(monitor.scale_factor()); + let center_x = monitor_position.x + (monitor_size.width as i32 - scaled.width) / 2; + let center_y = monitor_position.y + (monitor_size.height as i32 - scaled.height) / 2; + + Some(PhysicalPosition::new(center_x, center_y)) + } + None => None, + }; + + let mut builder = WindowBuilder::new() .with_title(&title) .with_inner_size(window_size) .with_min_inner_size(tao::dpi::LogicalSize::new(773, 350)) - .with_position(PhysicalPosition::new(center_x, center_y)) .with_resizable(true) - .with_visible(true) - .build(&event_loop) + .with_visible(true); + + if let Some(position) = position { + builder = builder.with_position(position); + } + + let window = builder.build(&event_loop) .expect("Failed to create the window"); #[cfg(windows)]