diff options
Diffstat (limited to '')
| -rw-r--r-- | modules/bar/components/workspaces/Workspaces.qml | 90 |
1 files changed, 13 insertions, 77 deletions
diff --git a/modules/bar/components/workspaces/Workspaces.qml b/modules/bar/components/workspaces/Workspaces.qml index b146aae..69b8e48 100644 --- a/modules/bar/components/workspaces/Workspaces.qml +++ b/modules/bar/components/workspaces/Workspaces.qml @@ -13,16 +13,17 @@ StyledClippingRect { required property ShellScreen screen - readonly property bool onSpecial: (Config.bar.workspaces.perMonitorWorkspaces ? Hypr.monitorFor(screen) : Hypr.focusedMonitor)?.lastIpcObject.specialWorkspace.name !== "" readonly property int activeWsId: Config.bar.workspaces.perMonitorWorkspaces ? (Hypr.monitorFor(screen).activeWorkspace?.id ?? 1) : Hypr.activeWsId - - readonly property var occupied: Hypr.workspaces.values.reduce((acc, curr) => { - acc[curr.id] = curr.lastIpcObject.windows > 0; - return acc; - }, {}) - readonly property int groupOffset: Math.floor((activeWsId - 1) / Config.bar.workspaces.shown) * Config.bar.workspaces.shown - - property real blur: onSpecial ? 1 : 0 + readonly property var monitorWorkspaces: { + if (Config.bar.workspaces.perMonitorWorkspaces) { + let monitor = Hypr.monitorFor(root.screen); + return Hypr.workspaces.values.filter(ws => { + return ws.monitor.id == monitor.id + }); + } else { + return Hypr.workspaces.values + } + } implicitWidth: Config.bar.sizes.innerWidth implicitHeight: layout.implicitHeight + Appearance.padding.small * 2 @@ -32,29 +33,6 @@ StyledClippingRect { Item { anchors.fill: parent - scale: root.onSpecial ? 0.8 : 1 - opacity: root.onSpecial ? 0.5 : 1 - - layer.enabled: root.blur > 0 - layer.effect: MultiEffect { - blurEnabled: true - blur: root.blur - blurMax: 32 - } - - Loader { - active: Config.bar.workspaces.occupiedBg - asynchronous: true - - anchors.fill: parent - anchors.margins: Appearance.padding.small - - sourceComponent: OccupiedBg { - workspaces: workspaces - occupied: root.occupied - groupOffset: root.groupOffset - } - } ColumnLayout { id: layout @@ -64,24 +42,21 @@ StyledClippingRect { Repeater { id: workspaces - - model: Config.bar.workspaces.shown - + model: monitorWorkspaces.length Workspace { + ws: monitorWorkspaces[index] activeWsId: root.activeWsId - occupied: root.occupied - groupOffset: root.groupOffset } } } Loader { anchors.horizontalCenter: parent.horizontalCenter - active: Config.bar.workspaces.activeIndicator asynchronous: true sourceComponent: ActiveIndicator { activeWsId: root.activeWsId + monitorWorkspaces: root.monitorWorkspaces workspaces: workspaces mask: layout } @@ -97,44 +72,5 @@ StyledClippingRect { Hypr.dispatch("togglespecialworkspace special"); } } - - Behavior on scale { - Anim {} - } - - Behavior on opacity { - Anim {} - } - } - - Loader { - id: specialWs - - anchors.fill: parent - anchors.margins: Appearance.padding.small - - active: opacity > 0 - asynchronous: true - - scale: root.onSpecial ? 1 : 0.5 - opacity: root.onSpecial ? 1 : 0 - - sourceComponent: SpecialWorkspaces { - screen: root.screen - } - - Behavior on scale { - Anim {} - } - - Behavior on opacity { - Anim {} - } - } - - Behavior on blur { - Anim { - duration: Appearance.anim.durations.small - } } } |