dock: dont aggressively unload

This commit is contained in:
end-4
2025-07-16 09:34:36 +07:00
parent a08e9e0e79
commit 7821cfe131
+104 -110
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)
property bool reveal: root.pinned
|| (Config.options?.dock.hoverToReveal && dockMouseArea.containsMouse)
|| dockApps.requestDockShow
|| (!ToplevelManager.activeToplevel?.activated)
component: PanelWindow { // Window anchors {
id: dockRoot bottom: true
screen: dockLoader.modelData left: true
right: true
property bool reveal: root.pinned }
|| (Config.options?.dock.hoverToReveal && dockMouseArea.containsMouse)
|| dockApps.requestDockShow
|| (!ToplevelManager.activeToplevel?.activated)
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
anchors.right: parent.right
hoverEnabled: true
Behavior on anchors.topMargin { VerticalButtonGroup {
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this) Layout.topMargin: Appearance.sizes.hyprlandGapsOut // why does this work
} GroupButton { // Pin button
baseWidth: 35
Item { baseHeight: 35
id: dockHoverRegion clickedWidth: baseWidth
anchors.fill: parent clickedHeight: baseHeight + 20
buttonRadius: Appearance.rounding.normal
Item { // Wrapper for the dock background toggled: root.pinned
id: dockBackground onClicked: root.pinned = !root.pinned
anchors {
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 {}
DockButton {
Layout.fillHeight: true
onClicked: Hyprland.dispatch("global quickshell:overviewToggle")
contentItem: MaterialSymbol { contentItem: MaterialSymbol {
anchors.fill: parent text: "keep"
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
font.pixelSize: parent.width / 2 iconSize: Appearance.font.pixelSize.larger
text: "apps" color: root.pinned ? Appearance.m3colors.m3onPrimary : Appearance.colors.colOnLayer0
color: Appearance.colors.colOnLayer0
} }
} }
} }
} DockSeparator {}
} DockApps { id: dockApps; }
DockSeparator {}
DockButton {
Layout.fillHeight: true
onClicked: Hyprland.dispatch("global quickshell:overviewToggle")
contentItem: MaterialSymbol {
anchors.fill: parent
horizontalAlignment: Text.AlignHCenter
font.pixelSize: parent.width / 2
text: "apps"
color: Appearance.colors.colOnLayer0
}
}
}
}
} }
} }
} }
} }