summaryrefslogtreecommitdiff
path: root/modules/bar/components/workspaces/Workspaces.qml
diff options
context:
space:
mode:
Diffstat (limited to 'modules/bar/components/workspaces/Workspaces.qml')
-rw-r--r--modules/bar/components/workspaces/Workspaces.qml90
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
- }
}
}