// Copyright (c) 2026 Storm Dragon // Authors: Storm Dragon, Angus Kola // SPDX-License-Identifier: GPL-3.0-or-later // Package session keeps desktop session policy independent of native backends. package session import ( "os" "strings" ) // Wayland respects an explicit session type; WAYLAND_DISPLAY is a fallback for // launchers that do not set XDG_SESSION_TYPE. func Wayland() bool { kind := strings.ToLower(strings.TrimSpace(os.Getenv("XDG_SESSION_TYPE"))) if kind != "" { return kind == "wayland" } return strings.TrimSpace(os.Getenv("WAYLAND_DISPLAY")) != "" } // GTKEnvironment preserves Xorg focus correlation in explicit X11 sessions. // Elsewhere GTK inherits the user's backend choice and selects its own default. func GTKEnvironment() []string { environment := os.Environ() if strings.EqualFold(strings.TrimSpace(os.Getenv("XDG_SESSION_TYPE")), "x11") { environment = append(environment, "GDK_BACKEND=x11") } return environment }