import qs.components import qs.services import qs.utils import qs.config import Quickshell import QtQuick import QtQuick.Layouts ColumnLayout { id: root required property int index required property int activeWsId required property var ws readonly property bool isOccupied: ws?.lastIpcObject?.windows > 0 readonly property bool isActive: ws?.id == activeWsId readonly property bool isVisible: isActive || isOccupied || true // Flag for finding workspace children readonly property bool isWorkspace: true Layout.alignment: Qt.AlignHCenter Layout.preferredHeight: isVisible ? implicitHeight : 0 spacing: 0 visible: isVisible StyledText { id: indicator Layout.alignment: Qt.AlignHCenter | Qt.AlignTop Layout.preferredHeight: Config.bar.sizes.innerWidth - Appearance.padding.small * 2 animate: true text: { let ws = root.ws; let wsName = !ws || ws.name == ws.id ? ws.id : ws.name[0]; let displayName = wsName.toString(); let label = Config.bar.workspaces.label || displayName; return label } color: root.isActive ? Colours.palette.m3onSurface : Colours.layer(Colours.palette.m3outlineVariant, 2) verticalAlignment: Qt.AlignVCenter } Behavior on Layout.preferredHeight { Anim {} } }