feat: MOONGREET_NO_LAYER_SHELL env var for windowed development mode

This commit is contained in:
nevaforget 2026-03-27 23:36:57 +01:00
parent cdfba07802
commit 658328b39b

View File

@ -54,22 +54,28 @@ fn activate(app: &gtk::Application) {
let config = config::load_config(None); let config = config::load_config(None);
let bg_path = config::resolve_background_path(&config); 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 // Main greeter window (login UI) — compositor picks focused monitor
let greeter_window = greeter::create_greeter_window(&bg_path, &config, app); 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(); greeter_window.present();
// Wallpaper-only windows on all monitors // Wallpaper-only windows on all monitors (only with layer shell)
let monitors = display.monitors(); if use_layer_shell {
for i in 0..monitors.n_items() { let monitors = display.monitors();
if let Some(monitor) = monitors for i in 0..monitors.n_items() {
.item(i) if let Some(monitor) = monitors
.and_then(|obj| obj.downcast::<gdk::Monitor>().ok()) .item(i)
{ .and_then(|obj| obj.downcast::<gdk::Monitor>().ok())
let wallpaper = greeter::create_wallpaper_window(&bg_path, app); {
setup_layer_shell(&wallpaper, false); let wallpaper = greeter::create_wallpaper_window(&bg_path, app);
wallpaper.set_monitor(Some(&monitor)); setup_layer_shell(&wallpaper, false);
wallpaper.present(); wallpaper.set_monitor(Some(&monitor));
wallpaper.present();
}
} }
} }
} }