From 658328b39bbe9e1c25481dc728b976645b144b82 Mon Sep 17 00:00:00 2001 From: nevaforget Date: Fri, 27 Mar 2026 23:36:57 +0100 Subject: [PATCH] feat: MOONGREET_NO_LAYER_SHELL env var for windowed development mode --- src/main.rs | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index 2890e97..7f68d9f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -54,22 +54,28 @@ fn activate(app: >k::Application) { let config = config::load_config(None); let bg_path = config::resolve_background_path(&config); + let use_layer_shell = std::env::var("MOONGREET_NO_LAYER_SHELL").is_err(); + // Main greeter window (login UI) — compositor picks focused monitor let greeter_window = greeter::create_greeter_window(&bg_path, &config, app); - setup_layer_shell(&greeter_window, true); + if use_layer_shell { + setup_layer_shell(&greeter_window, true); + } greeter_window.present(); - // Wallpaper-only windows on all monitors - let monitors = display.monitors(); - for i in 0..monitors.n_items() { - if let Some(monitor) = monitors - .item(i) - .and_then(|obj| obj.downcast::().ok()) - { - let wallpaper = greeter::create_wallpaper_window(&bg_path, app); - setup_layer_shell(&wallpaper, false); - wallpaper.set_monitor(Some(&monitor)); - wallpaper.present(); + // Wallpaper-only windows on all monitors (only with layer shell) + if use_layer_shell { + let monitors = display.monitors(); + for i in 0..monitors.n_items() { + if let Some(monitor) = monitors + .item(i) + .and_then(|obj| obj.downcast::().ok()) + { + let wallpaper = greeter::create_wallpaper_window(&bg_path, app); + setup_layer_shell(&wallpaper, false); + wallpaper.set_monitor(Some(&monitor)); + wallpaper.present(); + } } } }