import qs.config import qs.custom import Quickshell import Quickshell.Hyprland import QtQuick Item { id: root required property PersistentProperties uiState required property Item panels visible: height > 0 implicitHeight: 0 implicitWidth: content.implicitWidth states: State { name: "visible" when: root.uiState.launcher PropertyChanges { root.implicitHeight: content.implicitHeight } } transitions: [ Transition { from: "" to: "visible" Anim { target: root property: "implicitHeight" duration: Config.anim.durations.expressiveDefaultSpatial easing.bezierCurve: Config.anim.curves.expressiveDefaultSpatial } }, Transition { from: "visible" to: "" Anim { target: root property: "implicitHeight" duration: Config.anim.durations.normal easing.bezierCurve: Config.anim.curves.emphasized } } ] HyprlandFocusGrab { active: root.uiState.launcher windows: [QsWindow.window] onCleared: root.uiState.launcher = false } Background { id: background visible: false wrapper: root } GlowEffect { source: background glowColor: content.color } Content { id: content uiState: root.uiState wrapper: root panels: root.panels } }