import Quickshell import Quickshell.Hyprland // import Quickshell.Widgets import QtQuick import "../components" Rectangle { id: root required property var workspace required property string screenName visible: workspace?.lastIpcObject?.monitor === screenName implicitWidth: Math.max(32, iconsRow.implicitWidth + 14) implicitHeight: 18 radius: 6 color: workspace?.active ? Theme.accent : 'transparent' Row { id: iconsRow anchors.centerIn: parent spacing: 3 Repeater { model: root.workspace?.toplevels delegate: Item { id: iconItem required property var modelData implicitWidth: 16 implicitHeight: 16 property string appClass: "" Component.onCompleted: { var cls = modelData?.lastIpcObject?.["class"] ?? "" if (cls !== "") { appClass = cls } else if (modelData) { modelData.lastIpcObjectChanged.connect(function() { var c = iconItem.modelData?.lastIpcObject?.["class"] ?? "" if (c !== "") iconItem.appClass = c }) Qt.callLater(Hyprland.refreshToplevels) } } TrayIcon { anchors.fill: parent icon: iconItem.appClass size: 16 } } } // Workspace number shown when no windows are open Text { visible: (root.workspace?.toplevels?.values?.length ?? 0) === 0 text: root.workspace?.id ?? "" color: root.workspace?.active ? Theme.text : Theme.textDim font.pixelSize: 11 } } MouseArea { anchors.fill: parent onClicked: Hyprland.dispatch("workspace " + root.workspace.id) } }