summaryrefslogtreecommitdiff
path: root/modules/bar/components/workspaces
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-05-01 15:50:28 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-05-01 15:50:28 +1000
commit79892c927285cd695cea211c694dd78fae265a71 (patch)
treefdfc8a11c277616bc1df54b5dc4498d69aec5805 /modules/bar/components/workspaces
parentfeat: use qsTr (diff)
downloadcaelestia-shell-79892c927285cd695cea211c694dd78fae265a71.tar.gz
caelestia-shell-79892c927285cd695cea211c694dd78fae265a71.tar.bz2
caelestia-shell-79892c927285cd695cea211c694dd78fae265a71.zip
bar: fix workspaces occupied
Also some optimisations
Diffstat (limited to 'modules/bar/components/workspaces')
-rw-r--r--modules/bar/components/workspaces/ActiveIndicator.qml8
-rw-r--r--modules/bar/components/workspaces/OccupiedBg.qml4
-rw-r--r--modules/bar/components/workspaces/Workspaces.qml2
3 files changed, 8 insertions, 6 deletions
diff --git a/modules/bar/components/workspaces/ActiveIndicator.qml b/modules/bar/components/workspaces/ActiveIndicator.qml
index 5eb446e..4d9a0c4 100644
--- a/modules/bar/components/workspaces/ActiveIndicator.qml
+++ b/modules/bar/components/workspaces/ActiveIndicator.qml
@@ -14,10 +14,10 @@ Rectangle {
required property real maskHeight
required property int groupOffset
- property int currentIdx: Hyprland.activeWsId - 1 - groupOffset
- property real leading: (vertical ? workspaces[currentIdx]?.y : workspaces[currentIdx]?.x) ?? 0
- property real trailing: (vertical ? workspaces[currentIdx]?.y : workspaces[currentIdx]?.x) ?? 0
- property real currentSize: (workspaces[currentIdx]?.size) ?? 0
+ readonly property Workspace currentWs: workspaces[Hyprland.activeWsId - 1 - groupOffset]
+ property real leading: (vertical ? currentWs?.y : currentWs?.x) ?? 0
+ property real trailing: (vertical ? currentWs?.y : currentWs?.x) ?? 0
+ property real currentSize: (currentWs?.size) ?? 0
property real size: Math.abs(leading - trailing) + currentSize
property real offset: Math.min(leading, trailing)
diff --git a/modules/bar/components/workspaces/OccupiedBg.qml b/modules/bar/components/workspaces/OccupiedBg.qml
index 70aee84..774e176 100644
--- a/modules/bar/components/workspaces/OccupiedBg.qml
+++ b/modules/bar/components/workspaces/OccupiedBg.qml
@@ -17,8 +17,10 @@ Item {
onOccupiedChanged: {
let count = 0;
+ const start = groupOffset;
+ const end = start + BarConfig.workspaces.shown;
for (const [ws, occ] of Object.entries(occupied)) {
- if (ws > 0 && occ) {
+ if (ws > start && ws <= end && occ) {
if (!occupied[ws - 1]) {
if (pills[count])
pills[count].start = ws;
diff --git a/modules/bar/components/workspaces/Workspaces.qml b/modules/bar/components/workspaces/Workspaces.qml
index 35cc2b0..692ae32 100644
--- a/modules/bar/components/workspaces/Workspaces.qml
+++ b/modules/bar/components/workspaces/Workspaces.qml
@@ -14,7 +14,7 @@ Item {
acc[curr.id] = curr.lastIpcObject.windows > 0;
return acc;
}, {})
- readonly property int groupOffset: Math.floor(((Hyprland.activeWorkspace?.id ?? 1) - 1) / BarConfig.workspaces.shown) * BarConfig.workspaces.shown
+ readonly property int groupOffset: Math.floor((Hyprland.activeWsId - 1) / BarConfig.workspaces.shown) * BarConfig.workspaces.shown
implicitWidth: layout.implicitWidth
implicitHeight: layout.implicitHeight