import qs.components.misc import qs.modules.controlcenter import qs.services import Quickshell import Quickshell.Io Scope { id: root property bool launcherInterrupted readonly property bool hasFullscreen: Hypr.focusedWorkspace?.toplevels.values.some(t => t.lastIpcObject.fullscreen === 2) ?? false CustomShortcut { name: "controlCenter" description: "Open control center" onPressed: WindowFactory.create() } CustomShortcut { name: "showall" description: "Toggle launcher, dashboard and osd" onPressed: { if (root.hasFullscreen) return; const v = Visibilities.getForActive(); v.launcher = v.dashboard = v.osd = v.utilities = !(v.launcher || v.dashboard || v.osd || v.utilities); } } CustomShortcut { name: "dashboard" description: "Toggle dashboard" onPressed: { if (root.hasFullscreen) return; const visibilities = Visibilities.getForActive(); visibilities.dashboard = !visibilities.dashboard; } } CustomShortcut { name: "session" description: "Toggle session menu" onPressed: { if (root.hasFullscreen) return; const visibilities = Visibilities.getForActive(); visibilities.session = !visibilities.session; } } CustomShortcut { name: "launcher" description: "Toggle launcher" onPressed: root.launcherInterrupted = false onReleased: { if (!root.launcherInterrupted && !root.hasFullscreen) { const visibilities = Visibilities.getForActive(); visibilities.launcher = !visibilities.launcher; } root.launcherInterrupted = false; } } CustomShortcut { name: "launcherInterrupt" description: "Interrupt launcher keybind" onPressed: root.launcherInterrupted = true } IpcHandler { target: "drawers" function toggle(drawer: string): void { if (list().split("\n").includes(drawer)) { if (root.hasFullscreen && ["launcher", "session", "dashboard"].includes(drawer)) return; const visibilities = Visibilities.getForActive(); visibilities[drawer] = !visibilities[drawer]; } else { console.warn(`[IPC] Drawer "${drawer}" does not exist`); } } function list(): string { const visibilities = Visibilities.getForActive(); return Object.keys(visibilities).filter(k => typeof visibilities[k] === "boolean").join("\n"); } } IpcHandler { target: "controlCenter" function open(): void { WindowFactory.create(); } } }