import qs.modules.common import qs import QtQuick import Quickshell import Quickshell.Hyprland import Quickshell.Io pragma Singleton pragma ComponentBehavior: Bound Singleton { id: root property bool barOpen: true property bool sidebarLeftOpen: false property bool sidebarRightOpen: false property bool mediaControlsOpen: false property bool osdBrightnessOpen: false property bool osdVolumeOpen: false property bool oskOpen: false property bool overviewOpen: false property bool screenLocked: false property bool screenLockContainsCharacters: false property bool sessionOpen: false property bool superDown: false property bool superReleaseMightTrigger: true property bool workspaceShowNumbers: false property real screenZoom: 1 onScreenZoomChanged: { Quickshell.execDetached(["hyprctl", "keyword", "cursor:zoom_factor", root.screenZoom.toString()]); } Behavior on screenZoom { animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this) } GlobalShortcut { name: "workspaceNumber" description: "Hold to show workspace numbers, release to show icons" onPressed: { root.superDown = true } onReleased: { root.superDown = false } } IpcHandler { target: "zoom" function zoomIn() { screenZoom = Math.min(screenZoom + 0.4, 3.0) } function zoomOut() { screenZoom = Math.max(screenZoom - 0.4, 1) } } IpcHandler { target: "theme" function dark() { const wallpaper = Config.options.background.wallpaperPath || `${Quickshell.env("HOME")}/Pictures/Wallpapers/konachan_random_image.png` Quickshell.execDetached(["bash", `${Quickshell.env("HOME")}/.config/quickshell/scripts/colors/switchwall-wrapper.sh`, wallpaper, "--mode", "dark"]) } function light() { const wallpaper = Config.options.background.wallpaperPath || `${Quickshell.env("HOME")}/Pictures/Wallpapers/konachan_random_image.png` Quickshell.execDetached(["bash", `${Quickshell.env("HOME")}/.config/quickshell/scripts/colors/switchwall-wrapper.sh`, wallpaper, "--mode", "light"]) } } }