diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/Modules/Greetd/GreetdSettings.qml')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/dms/Modules/Greetd/GreetdSettings.qml | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/Modules/Greetd/GreetdSettings.qml b/raveos-hyprland-theme/theme-data/dms/Modules/Greetd/GreetdSettings.qml new file mode 100644 index 0000000..e1f670c --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Modules/Greetd/GreetdSettings.qml @@ -0,0 +1,199 @@ +pragma Singleton +pragma ComponentBehavior: Bound + +import QtQuick +import Quickshell +import Quickshell.Io +import qs.Common +import "GreetdEnv.js" as GreetdEnv + +Singleton { + id: root + + readonly property string configPath: { + const greetCfgDir = Quickshell.env("DMS_GREET_CFG_DIR") || "/var/cache/dms-greeter"; + return greetCfgDir + "/settings.json"; + } + + readonly property string _greeterCacheDir: { + const i = root.configPath.lastIndexOf("/"); + return i >= 0 ? root.configPath.substring(0, i) : ""; + } + readonly property string greeterWallpaperOverridePath: root._greeterCacheDir ? (root._greeterCacheDir + "/greeter_wallpaper_override.jpg") : "" + + property string currentThemeName: "purple" + property bool settingsLoaded: false + property string customThemeFile: "" + property var registryThemeVariants: ({}) + property string matugenScheme: "scheme-tonal-spot" + property bool use24HourClock: true + property bool showSeconds: false + property bool padHours12Hour: false + property bool greeterUse24HourClock: true + property bool greeterShowSeconds: false + property bool greeterPadHours12Hour: false + property string greeterLockDateFormat: "" + property string greeterFontFamily: "" + property string greeterWallpaperFillMode: "" + property bool useFahrenheit: false + property bool nightModeEnabled: false + property string weatherLocation: "New York, NY" + property string weatherCoordinates: "40.7128,-74.0060" + property bool useAutoLocation: false + property bool weatherEnabled: true + property string iconTheme: "System Default" + property bool useOSLogo: false + property string osLogoColorOverride: "" + property real osLogoBrightness: 0.5 + property real osLogoContrast: 1 + property string fontFamily: "Inter Variable" + property string monoFontFamily: "Fira Code" + property int fontWeight: Font.Normal + property real fontScale: 1.0 + property real cornerRadius: 12 + property string widgetBackgroundColor: "sch" + property string lockDateFormat: "" + property bool lockScreenShowPowerActions: true + property bool lockScreenShowProfileImage: true + property bool rememberLastSession: true + property bool rememberLastUser: true + property bool greeterEnableFprint: false + property bool greeterEnableU2f: false + property string greeterWallpaperPath: "" + property bool powerActionConfirm: true + property real powerActionHoldDuration: 0.5 + property var powerMenuActions: ["reboot", "logout", "poweroff", "lock", "suspend", "restart"] + property string powerMenuDefaultAction: "logout" + property bool powerMenuGridLayout: false + property var screenPreferences: ({}) + property int animationSpeed: 2 + property string wallpaperFillMode: "Fill" + + function parseSettings(content) { + try { + let settings = {}; + if (content && content.trim()) { + settings = JSON.parse(content); + } + + const envRememberLastSession = GreetdEnv.readBoolOverride(Quickshell.env, ["DMS_GREET_REMEMBER_LAST_SESSION", "DMS_SAVE_SESSION"], undefined); + const envRememberLastUser = GreetdEnv.readBoolOverride(Quickshell.env, ["DMS_GREET_REMEMBER_LAST_USER", "DMS_SAVE_USERNAME"], undefined); + + currentThemeName = settings.currentThemeName !== undefined ? settings.currentThemeName : "purple"; + customThemeFile = settings.customThemeFile !== undefined ? settings.customThemeFile : ""; + registryThemeVariants = settings.registryThemeVariants !== undefined ? + settings.registryThemeVariants : ({}); + matugenScheme = settings.matugenScheme !== undefined ? settings.matugenScheme : "scheme-tonal-spot"; + use24HourClock = settings.use24HourClock !== undefined ? settings.use24HourClock : true; + showSeconds = settings.showSeconds !== undefined ? settings.showSeconds : false; + padHours12Hour = settings.padHours12Hour !== undefined ? settings.padHours12Hour : false; + greeterUse24HourClock = settings.greeterUse24HourClock !== undefined ? settings.greeterUse24HourClock : use24HourClock; + greeterShowSeconds = settings.greeterShowSeconds !== undefined ? settings.greeterShowSeconds : showSeconds; + greeterPadHours12Hour = settings.greeterPadHours12Hour !== undefined ? settings.greeterPadHours12Hour : padHours12Hour; + greeterLockDateFormat = settings.greeterLockDateFormat !== undefined ? settings.greeterLockDateFormat : ""; + greeterFontFamily = settings.greeterFontFamily !== undefined ? settings.greeterFontFamily : ""; + greeterWallpaperFillMode = settings.greeterWallpaperFillMode !== undefined ? settings.greeterWallpaperFillMode : ""; + useFahrenheit = settings.useFahrenheit !== undefined ? settings.useFahrenheit : false; + nightModeEnabled = settings.nightModeEnabled !== undefined ? settings.nightModeEnabled : false; + weatherLocation = settings.weatherLocation !== undefined ? settings.weatherLocation : "New York, NY"; + weatherCoordinates = settings.weatherCoordinates !== undefined ? settings.weatherCoordinates : "40.7128,-74.0060"; + useAutoLocation = settings.useAutoLocation !== undefined ? settings.useAutoLocation : false; + weatherEnabled = settings.weatherEnabled !== undefined ? settings.weatherEnabled : true; + iconTheme = settings.iconTheme !== undefined ? settings.iconTheme : "System Default"; + useOSLogo = settings.useOSLogo !== undefined ? settings.useOSLogo : false; + osLogoColorOverride = settings.osLogoColorOverride !== undefined ? settings.osLogoColorOverride : ""; + osLogoBrightness = settings.osLogoBrightness !== undefined ? settings.osLogoBrightness : 0.5; + osLogoContrast = settings.osLogoContrast !== undefined ? settings.osLogoContrast : 1; + fontFamily = settings.fontFamily !== undefined ? settings.fontFamily : Theme.defaultFontFamily; + monoFontFamily = settings.monoFontFamily !== undefined ? settings.monoFontFamily : Theme.defaultMonoFontFamily; + fontWeight = settings.fontWeight !== undefined ? settings.fontWeight : Font.Normal; + fontScale = settings.fontScale !== undefined ? settings.fontScale : 1.0; + cornerRadius = settings.cornerRadius !== undefined ? settings.cornerRadius : 12; + widgetBackgroundColor = settings.widgetBackgroundColor !== undefined ? settings.widgetBackgroundColor : "sch"; + lockDateFormat = settings.lockDateFormat !== undefined ? settings.lockDateFormat : ""; + lockScreenShowPowerActions = settings.lockScreenShowPowerActions !== undefined ? settings.lockScreenShowPowerActions : true; + lockScreenShowProfileImage = settings.lockScreenShowProfileImage !== undefined ? settings.lockScreenShowProfileImage : true; + if (envRememberLastSession !== undefined) { + rememberLastSession = envRememberLastSession; + } else { + rememberLastSession = settings.greeterRememberLastSession !== undefined ? settings.greeterRememberLastSession : settings.rememberLastSession !== undefined ? settings.rememberLastSession : true; + } + if (envRememberLastUser !== undefined) { + rememberLastUser = envRememberLastUser; + } else { + rememberLastUser = settings.greeterRememberLastUser !== undefined ? settings.greeterRememberLastUser : settings.rememberLastUser !== undefined ? settings.rememberLastUser : true; + } + greeterEnableFprint = settings.greeterEnableFprint !== undefined ? settings.greeterEnableFprint : false; + greeterEnableU2f = settings.greeterEnableU2f !== undefined ? settings.greeterEnableU2f : false; + greeterWallpaperPath = settings.greeterWallpaperPath !== undefined ? settings.greeterWallpaperPath : ""; + powerActionConfirm = settings.powerActionConfirm !== undefined ? settings.powerActionConfirm : true; + powerActionHoldDuration = settings.powerActionHoldDuration !== undefined ? settings.powerActionHoldDuration : 0.5; + powerMenuActions = settings.powerMenuActions !== undefined ? settings.powerMenuActions : ["reboot", "logout", "poweroff", "lock", "suspend", "restart"]; + powerMenuDefaultAction = settings.powerMenuDefaultAction !== undefined ? settings.powerMenuDefaultAction : "logout"; + powerMenuGridLayout = settings.powerMenuGridLayout !== undefined ? settings.powerMenuGridLayout : false; + screenPreferences = settings.screenPreferences !== undefined ? settings.screenPreferences : ({}); + animationSpeed = settings.animationSpeed !== undefined ? settings.animationSpeed : 2; + wallpaperFillMode = settings.wallpaperFillMode !== undefined ? settings.wallpaperFillMode : "Fill"; + + if (typeof Theme !== "undefined") { + if (currentThemeName === "custom" && customThemeFile) { + Theme.loadCustomThemeFromFile(customThemeFile); + } + Theme.applyGreeterTheme(currentThemeName); + } + } catch (e) { + console.warn("Failed to parse greetd settings:", e); + } finally { + settingsLoaded = true; + } + } + + function getEffectiveTimeFormat() { + const use24 = greeterUse24HourClock; + const secs = greeterShowSeconds; + const pad = greeterPadHours12Hour; + if (use24) + return secs ? "hh:mm:ss" : "hh:mm"; + if (pad) + return secs ? "hh:mm:ss AP" : "hh:mm AP"; + return secs ? "h:mm:ss AP" : "h:mm AP"; + } + + function getEffectiveLockDateFormat() { + const fmt = (greeterLockDateFormat !== undefined && greeterLockDateFormat !== "") ? greeterLockDateFormat : lockDateFormat; + return fmt && fmt.length > 0 ? fmt : Locale.LongFormat; + } + + function getEffectiveWallpaperFillMode() { + return (greeterWallpaperFillMode && greeterWallpaperFillMode !== "") ? greeterWallpaperFillMode : wallpaperFillMode; + } + + function getEffectiveFontFamily() { + return (greeterFontFamily && greeterFontFamily !== "") ? greeterFontFamily : fontFamily; + } + + function getFilteredScreens(componentId) { + const prefs = screenPreferences && screenPreferences[componentId] || ["all"]; + if (prefs.includes("all")) { + return Quickshell.screens; + } + return Quickshell.screens.filter(screen => prefs.includes(screen.name)); + } + + FileView { + id: settingsFile + path: root.configPath + blockLoading: false + blockWrites: true + atomicWrites: false + watchChanges: false + printErrors: true + onLoaded: { + parseSettings(settingsFile.text()); + } + onLoadFailed: error => { + console.warn("Failed to load greetd settings:", error); + root.parseSettings(""); + } + } +} |