import qs import qs.services import qs.modules.common import qs.modules.common.widgets import qs.modules.common.functions import QtQuick import QtQuick.Controls import Quickshell import Quickshell.Io import Quickshell.Wayland import Quickshell.Hyprland Scope { id: root Loader { id: wallpaperSelectorLoader active: GlobalStates.wallpaperSelectorOpen sourceComponent: PanelWindow { id: panelWindow readonly property HyprlandMonitor monitor: Hyprland.monitorFor(panelWindow.screen) property bool monitorIsFocused: (Hyprland.focusedMonitor?.id == monitor?.id) exclusionMode: ExclusionMode.Ignore WlrLayershell.namespace: "quickshell:wallpaperSelector" WlrLayershell.layer: WlrLayer.Overlay WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand color: "transparent" anchors { top: true bottom: true left: true right: true } margins { top: Appearance.sizes.barHeight + Appearance.sizes.hyprlandGapsOut } mask: Region { item: content } HyprlandFocusGrab { // Click outside to close id: grab windows: [ panelWindow ] active: wallpaperSelectorLoader.active onCleared: () => { if (!active) GlobalStates.wallpaperSelectorOpen = false; } } WallpaperSelectorContent { id: content anchors { top: parent.top horizontalCenter: parent.horizontalCenter } } } } IpcHandler { target: "wallpaperSelector" function toggle(): void { GlobalStates.wallpaperSelectorOpen = !GlobalStates.wallpaperSelectorOpen } } GlobalShortcut { name: "wallpaperSelectorToggle" description: "Toggle wallpaper selector" onPressed: { GlobalStates.wallpaperSelectorOpen = !GlobalStates.wallpaperSelectorOpen; } } }