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 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::<gdk::Monitor>().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::<gdk::Monitor>().ok())
{
let wallpaper = greeter::create_wallpaper_window(&bg_path, app);
setup_layer_shell(&wallpaper, false);
wallpaper.set_monitor(Some(&monitor));
wallpaper.present();
}
}
}
}