diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-07-13 18:44:48 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-07-13 18:44:48 +0800 |
| commit | e6393e59246a826fda921bcad0f81563544b1e3f (patch) | |
| tree | dd418803f73ccafb63b96e88dc7721ff5230ed48 | |
| parent | be0108d4e621472e795f61dda90d0decca1c5085 (diff) | |
optimize
| -rw-r--r-- | bar/Workspace.qml | 30 |
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 } } } |
