dock: pinned mode acts as screen split - bar shrinks, corners adjust, opaque background

This commit is contained in:
Damocles 2026-04-25 21:48:35 +02:00
parent c22eb51dcd
commit f501f977d1
9 changed files with 52 additions and 21 deletions

View file

@ -14,11 +14,11 @@ PanelWindow {
required property var screen
visible: D.DockState.open
visible: S.DockState.open
color: "transparent"
WlrLayershell.layer: D.DockState.mode === "pinned" ? WlrLayer.Top : WlrLayer.Overlay
WlrLayershell.exclusiveZone: D.DockState.mode === "pinned" ? _dockWidth : 0
WlrLayershell.layer: S.DockState.mode === "pinned" ? WlrLayer.Top : WlrLayer.Overlay
WlrLayershell.exclusiveZone: S.DockState.mode === "pinned" ? _dockWidth : 0
WlrLayershell.namespace: "nova-dock"
anchors.top: true
@ -31,8 +31,21 @@ PanelWindow {
implicitWidth: _dockWidth
// Set reserved width for bar/corners when pinned
onVisibleChanged: {
if (S.DockState.mode === "pinned")
S.DockState.reservedWidth = _dockWidth;
}
Connections {
target: S.DockState
function onModeChanged() {
if (S.DockState.mode === "pinned")
S.DockState.reservedWidth = root._dockWidth;
}
}
// Slide animation
property real _slideX: D.DockState.open ? 0 : _dockWidth
property real _slideX: S.DockState.open ? 0 : _dockWidth
Behavior on _slideX {
enabled: !S.Theme.reducedMotion
@ -46,7 +59,7 @@ PanelWindow {
HoverHandler {
id: _dockHover
onHoveredChanged: {
if (!hovered && D.DockState.mode === "overlay")
if (!hovered && S.DockState.mode === "overlay")
_overlayCloseTimer.restart();
else
_overlayCloseTimer.stop();
@ -56,16 +69,16 @@ PanelWindow {
Timer {
id: _overlayCloseTimer
interval: 200
onTriggered: if (D.DockState.mode === "overlay")
D.DockState.close()
onTriggered: if (S.DockState.mode === "overlay")
S.DockState.close()
}
// Background
// Background - fully opaque when pinned, semi-transparent in overlay
Rectangle {
id: _bg
anchors.fill: parent
color: S.Theme.base00
opacity: Math.max(S.Theme.barOpacity, 0.85)
opacity: S.DockState.mode === "pinned" ? 1.0 : Math.max(S.Theme.barOpacity, 0.85)
transform: Translate {
x: root._slideX
@ -355,7 +368,7 @@ PanelWindow {
_runner.command = cmd;
_runner.running = true;
}
onDismiss: D.DockState.close()
onDismiss: S.DockState.close()
}
}
}
@ -370,13 +383,13 @@ PanelWindow {
M.ProcessList {
id: _cpuProcs
sortBy: "cpu"
active: _cpuCard.expanded && D.DockState.open
active: _cpuCard.expanded && S.DockState.open
}
M.ProcessList {
id: _memProcs
sortBy: "mem"
active: _memCard.expanded && D.DockState.open
active: _memCard.expanded && S.DockState.open
}
PwObjectTracker {