dock: dont aggressively unload

This commit is contained in:
end-4
2025-07-16 09:34:36 +07:00
parent a08e9e0e79
commit 7821cfe131
+102 -108
View File
@@ -19,131 +19,125 @@ Scope { // Scope
Variants { // For each monitor Variants { // For each monitor
model: Quickshell.screens model: Quickshell.screens
LazyLoader { PanelWindow { // Window
id: dockLoader id: dockRoot
required property var modelData screen: dockLoader.modelData
activeAsync: Config.options?.dock.hoverToReveal || (!ToplevelManager.activeToplevel?.activated)
component: PanelWindow { // Window property bool reveal: root.pinned
id: dockRoot || (Config.options?.dock.hoverToReveal && dockMouseArea.containsMouse)
screen: dockLoader.modelData || dockApps.requestDockShow
|| (!ToplevelManager.activeToplevel?.activated)
property bool reveal: root.pinned anchors {
|| (Config.options?.dock.hoverToReveal && dockMouseArea.containsMouse) bottom: true
|| dockApps.requestDockShow left: true
|| (!ToplevelManager.activeToplevel?.activated) right: true
}
anchors { exclusiveZone: root.pinned ? implicitHeight
bottom: true - (Appearance.sizes.hyprlandGapsOut)
left: true - (Appearance.sizes.elevationMargin - Appearance.sizes.hyprlandGapsOut) : 0
right: true
implicitWidth: dockBackground.implicitWidth
WlrLayershell.namespace: "quickshell:dock"
color: "transparent"
implicitHeight: (Config.options?.dock.height ?? 70) + Appearance.sizes.elevationMargin + Appearance.sizes.hyprlandGapsOut
mask: Region {
item: dockMouseArea
}
MouseArea {
id: dockMouseArea
anchors.top: parent.top
height: parent.height
anchors.topMargin: dockRoot.reveal ? 0 :
Config.options?.dock.hoverToReveal ? (dockRoot.implicitHeight - Config.options.dock.hoverRegionHeight) :
(dockRoot.implicitHeight + 1)
anchors.left: parent.left
anchors.right: parent.right
hoverEnabled: true
Behavior on anchors.topMargin {
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
} }
exclusiveZone: root.pinned ? implicitHeight Item {
- (Appearance.sizes.hyprlandGapsOut) id: dockHoverRegion
- (Appearance.sizes.elevationMargin - Appearance.sizes.hyprlandGapsOut) : 0 anchors.fill: parent
implicitWidth: dockBackground.implicitWidth Item { // Wrapper for the dock background
WlrLayershell.namespace: "quickshell:dock" id: dockBackground
color: "transparent" anchors {
top: parent.top
bottom: parent.bottom
horizontalCenter: parent.horizontalCenter
}
implicitHeight: (Config.options?.dock.height ?? 70) + Appearance.sizes.elevationMargin + Appearance.sizes.hyprlandGapsOut implicitWidth: dockRow.implicitWidth + 5 * 2
height: parent.height - Appearance.sizes.elevationMargin - Appearance.sizes.hyprlandGapsOut
mask: Region { StyledRectangularShadow {
item: dockMouseArea target: dockVisualBackground
} }
Rectangle { // The real rectangle that is visible
id: dockVisualBackground
property real margin: Appearance.sizes.elevationMargin
anchors.fill: parent
anchors.topMargin: Appearance.sizes.elevationMargin
anchors.bottomMargin: Appearance.sizes.hyprlandGapsOut
color: Appearance.colors.colLayer0
border.width: 1
border.color: Appearance.m3colors.m3outlineVariant
radius: Appearance.rounding.large
}
MouseArea { RowLayout {
id: dockMouseArea id: dockRow
anchors.top: parent.top anchors.top: parent.top
height: parent.height anchors.bottom: parent.bottom
anchors.topMargin: dockRoot.reveal ? 0 : anchors.horizontalCenter: parent.horizontalCenter
Config.options?.dock.hoverToReveal ? (dockRoot.implicitHeight - Config.options.dock.hoverRegionHeight) : spacing: 3
(dockRoot.implicitHeight + 1) property real padding: 5
anchors.left: parent.left VerticalButtonGroup {
anchors.right: parent.right Layout.topMargin: Appearance.sizes.hyprlandGapsOut // why does this work
hoverEnabled: true GroupButton { // Pin button
baseWidth: 35
Behavior on anchors.topMargin { baseHeight: 35
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this) clickedWidth: baseWidth
} clickedHeight: baseHeight + 20
buttonRadius: Appearance.rounding.normal
Item { toggled: root.pinned
id: dockHoverRegion onClicked: root.pinned = !root.pinned
anchors.fill: parent contentItem: MaterialSymbol {
text: "keep"
Item { // Wrapper for the dock background horizontalAlignment: Text.AlignHCenter
id: dockBackground iconSize: Appearance.font.pixelSize.larger
anchors { color: root.pinned ? Appearance.m3colors.m3onPrimary : Appearance.colors.colOnLayer0
top: parent.top
bottom: parent.bottom
horizontalCenter: parent.horizontalCenter
}
implicitWidth: dockRow.implicitWidth + 5 * 2
height: parent.height - Appearance.sizes.elevationMargin - Appearance.sizes.hyprlandGapsOut
StyledRectangularShadow {
target: dockVisualBackground
}
Rectangle { // The real rectangle that is visible
id: dockVisualBackground
property real margin: Appearance.sizes.elevationMargin
anchors.fill: parent
anchors.topMargin: Appearance.sizes.elevationMargin
anchors.bottomMargin: Appearance.sizes.hyprlandGapsOut
color: Appearance.colors.colLayer0
border.width: 1
border.color: Appearance.m3colors.m3outlineVariant
radius: Appearance.rounding.large
}
RowLayout {
id: dockRow
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
spacing: 3
property real padding: 5
VerticalButtonGroup {
Layout.topMargin: Appearance.sizes.hyprlandGapsOut // why does this work
GroupButton { // Pin button
baseWidth: 35
baseHeight: 35
clickedWidth: baseWidth
clickedHeight: baseHeight + 20
buttonRadius: Appearance.rounding.normal
toggled: root.pinned
onClicked: root.pinned = !root.pinned
contentItem: MaterialSymbol {
text: "keep"
horizontalAlignment: Text.AlignHCenter
iconSize: Appearance.font.pixelSize.larger
color: root.pinned ? Appearance.m3colors.m3onPrimary : Appearance.colors.colOnLayer0
}
} }
} }
DockSeparator {} }
DockApps { id: dockApps; } DockSeparator {}
DockSeparator {} DockApps { id: dockApps; }
DockButton { DockSeparator {}
Layout.fillHeight: true DockButton {
onClicked: Hyprland.dispatch("global quickshell:overviewToggle") Layout.fillHeight: true
contentItem: MaterialSymbol { onClicked: Hyprland.dispatch("global quickshell:overviewToggle")
anchors.fill: parent contentItem: MaterialSymbol {
horizontalAlignment: Text.AlignHCenter anchors.fill: parent
font.pixelSize: parent.width / 2 horizontalAlignment: Text.AlignHCenter
text: "apps" font.pixelSize: parent.width / 2
color: Appearance.colors.colOnLayer0 text: "apps"
} color: Appearance.colors.colOnLayer0
} }
} }
} }
} }
} }
} }
} }
} }