pragma ComponentBehavior: Bound import qs.services import qs.config import qs.components import Quickshell import QtQuick import QtQuick.Layouts import QtQuick.Effects StyledClippingRect { id: root required property ShellScreen screen readonly property int activeWsId: Config.bar.workspaces.perMonitorWorkspaces ? (Hypr.monitorFor(screen).activeWorkspace?.id ?? 1) : Hypr.activeWsId implicitWidth: Config.bar.sizes.innerWidth implicitHeight: layout.implicitHeight + Appearance.padding.small * 2 color: Colours.tPalette.m3surfaceContainer radius: Appearance.rounding.full Item { anchors.fill: parent ColumnLayout { id: layout anchors.centerIn: parent spacing: Math.floor(Appearance.spacing.small / 2) Repeater { id: workspaces model: Hypr.workspaces.values.length Workspace { ws: Hypr.workspaces.values[index] activeWsId: root.activeWsId } } } Loader { anchors.horizontalCenter: parent.horizontalCenter asynchronous: true sourceComponent: ActiveIndicator { activeWsId: root.activeWsId workspaces: workspaces mask: layout } } MouseArea { anchors.fill: layout onClicked: event => { const ws = layout.childAt(event.x, event.y).ws; if (Hypr.activeWsId !== ws) Hypr.dispatch(`workspace ${ws}`); else Hypr.dispatch("togglespecialworkspace special"); } } } }