pragma Singleton import QtQuick import Quickshell.Hyprland QtObject { id: manager property bool shellOpen: false property bool quickSettingsOpen: false property var windowRequests: ({}) property var quickSettingsPayload: ({}) property var globals: ({}) signal shellOpened signal shellClosed signal quickSettingsOpened signal quickSettingsClosed signal windowRequested(string name, var payload) function openShell() { if (!shellOpen) { console.log("ShellStateManager: openShell"); Hyprland.dispatch("submap deltarune"); shellOpen = true; shellOpened(); } } function closeShell() { if (shellOpen) { console.log("ShellStateManager: closeShell"); Hyprland.dispatch("submap reset"); if (quickSettingsOpen) { closeQuickSettings(); } shellOpen = false; shellClosed(); } } function toggleShell() { shellOpen ? closeShell() : openShell(); } function requestWindow(name, payload) { console.log("ShellStateManager: requestWindow", name, payload); windowRequests[name] = { payload: payload, timestamp: Date.now() }; windowRequested(name, payload); } function openQuickSettings(payload) { var normalizedPayload = payload || ({}); quickSettingsPayload = normalizedPayload; console.log("ShellStateManager: openQuickSettings", normalizedPayload); if (!quickSettingsOpen) { quickSettingsOpen = true; quickSettingsOpened(); } requestWindow("quickSettings", normalizedPayload); } function closeQuickSettings() { if (quickSettingsOpen) { console.log("ShellStateManager: closeQuickSettings"); quickSettingsOpen = false; quickSettingsClosed(); } } function toggleQuickSettings(payload) { quickSettingsOpen ? closeQuickSettings() : openQuickSettings(payload); } function setGlobal(key, value) { globals[key] = value; } function global(key, defaultValue) { return globals.hasOwnProperty(key) ? globals[key] : defaultValue; } }