1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-01 19:18:28 -04:00
Files
DankMaterialShell/quickshell/Modules/Dock/Dock.qml
T

92 lines
3.2 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import Quickshell
import Quickshell.Wayland
import qs.Common
import qs.Services
import qs.Widgets
Variants {
id: dockVariants
// Connected frame mode renders the dock inside the frame surface; skip the standalone window there.
model: SettingsData.getFilteredScreens("dock").filter(screen => !CompositorService.frameHostsDockForScreen(screen))
property var contextMenu
property var trashContextMenu
delegate: PanelWindow {
id: dock
property var modelData: item
screen: modelData
color: "transparent"
WlrLayershell.namespace: "dms:dock"
WlrLayershell.layer: body.usesOverlayLayer ? WlrLayer.Overlay : WlrLayer.Top
anchors {
top: !body.isVertical ? (SettingsData.dockPosition === SettingsData.Position.Top) : true
bottom: !body.isVertical ? (SettingsData.dockPosition === SettingsData.Position.Bottom) : true
left: !body.isVertical ? true : (SettingsData.dockPosition === SettingsData.Position.Left)
right: !body.isVertical ? true : (SettingsData.dockPosition === SettingsData.Position.Right)
}
visible: {
if (CompositorService.isNiri && NiriService.inOverview) {
return SettingsData.dockOpenOnOverview;
}
return SettingsData.showDock;
}
implicitWidth: body.surfaceImplicitWidth
implicitHeight: body.surfaceImplicitHeight
exclusiveZone: body.surfaceExclusiveZone
WindowBlur {
targetWindow: dock
blurEnabled: body.effectiveBlurEnabled && !body.usesConnectedFrameChrome
blurX: body.blurX
blurY: body.blurY
blurWidth: body.blurWidth
blurHeight: body.blurHeight
blurRadius: body.blurRadius
}
mask: Region {
item: body.inputMaskItem
}
DockBody {
id: body
anchors.fill: parent
hostWindow: dock
modelData: dock.modelData
contextMenu: dockVariants.contextMenu
trashContextMenu: dockVariants.trashContextMenu
}
PanelWindow {
id: dockExclusion
screen: dock.screen || dock.modelData
visible: body.frameDockExclusionActive && body.shouldReserveDockSpace
color: "transparent"
mask: Region {}
implicitWidth: body.isVertical ? body.dockReserveZone : 1
implicitHeight: body.isVertical ? 1 : body.dockReserveZone
exclusiveZone: visible ? body.dockReserveZone : -1
WlrLayershell.namespace: "dms:dock-exclusion"
WlrLayershell.layer: WlrLayer.Top
anchors {
top: !body.isVertical ? (SettingsData.dockPosition === SettingsData.Position.Top) : true
bottom: !body.isVertical ? (SettingsData.dockPosition === SettingsData.Position.Bottom) : true
left: !body.isVertical ? true : (SettingsData.dockPosition === SettingsData.Position.Left)
right: !body.isVertical ? true : (SettingsData.dockPosition === SettingsData.Position.Right)
}
}
}
}