summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-07-13 18:44:48 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-07-13 18:44:48 +0800
commite6393e59246a826fda921bcad0f81563544b1e3f (patch)
treedd418803f73ccafb63b96e88dc7721ff5230ed48
parentbe0108d4e621472e795f61dda90d0decca1c5085 (diff)
optimize
-rw-r--r--bar/Workspace.qml30
1 files changed, 13 insertions, 17 deletions
diff --git a/bar/Workspace.qml b/bar/Workspace.qml
index 52db8a1..71bc0df 100644
--- a/bar/Workspace.qml
+++ b/bar/Workspace.qml
@@ -14,19 +14,14 @@ Item {
// readonly property HyprlandMonitor monitor: Hyprland.monitorFor(screen) // multi monitor
// dont work no more for some reason
- function isActive(index: int): bool {
- for (let i of ws.values)
- if (i.id === (index + 1) && i.active)
- return true;
- return false;
- }
- function isOccupied(index: int): bool {
- for (let i of ws.values) {
- if (i.id === (index + 1) && i?.toplevels?.values?.length > 0) {
- return true;
- }
- }
- return false;
+
+ function getWorkspaceStats(index) {
+ const w = ws.values.find(i => i.id === index + 1);
+ return {
+ isOccupied: !!(w?.toplevels?.values?.length),
+ isActive: !!w?.active,
+ isUrgent: !!w?.urgent
+ };
}
implicitWidth: layout.implicitWidth
@@ -43,8 +38,9 @@ Item {
Rectangle {
id: workspaceRect
+ property var st: getWorkspaceStats(index)
- implicitWidth: !isActive(index) ? Config.Bar.workspaceIconSize : Config.Bar.workspaceActiveIconSize
+ implicitWidth: !st?.isActive ? Config.Bar.workspaceIconSize : Config.Bar.workspaceActiveIconSize
implicitHeight: Config.Bar.workspaceIconSize - Config.Bar.workspaceHorizontalSpacing
radius: Config.Bar.workspaceRounding
Icons {
@@ -52,12 +48,12 @@ Item {
text: Config.Icons.ws[index + 1]
font.pixelSize: Config.Bar.workspaceIconSize / 2
color: Config.Colors.foreground // TODO make IText w/ ts default color
- opacity: !isOccupied(index) ? 0 : 1 // less contrast
+ opacity: !st?.isOccupied ? 0 : 1 // less contrast?
// opacity: isActive(index) ? Config.Bar.workspaceActiveOpacity : isOccupied(index) ? Config.Bar.workspaceOpacity : Config.Bar.workspaceEmptyOpacity
}
- color: isOccupied(index) ? Config.Colors.alt : Config.Colors.foreground
- opacity: isActive(index) && isOccupied(index) ? Config.Bar.workspaceActiveOpacity : isOccupied(index) ? Config.Bar.workspaceOpacity : Config.Bar.workspaceEmptyOpacity
+ color: st?.isOccupied ? Config.Colors.alt : Config.Colors.foreground
+ opacity: st?.isActive && st?.isOccupied ? Config.Bar.workspaceActiveOpacity : st?.isOccupied ? Config.Bar.workspaceOpacity : Config.Bar.workspaceEmptyOpacity
}
}
}