import Quickshell import Quickshell.Io import Quickshell.Hyprland import QtQuick import QtQuick.Layouts // Mirrors eww workspaces-widget / workspace-btn Item { id: root property var workspaces: [] implicitHeight: row.implicitHeight implicitWidth: row.implicitWidth RowLayout { id: row spacing: 10 Repeater { model: root.workspaces // workspace-btn equivalent Rectangle { id: wsBtn required property var modelData readonly property bool active: modelData.active ?? false readonly property bool urgent: modelData.urgent ?? false readonly property bool empty: modelData.empty ?? false implicitWidth: Math.max(label.implicitWidth + 16, modelData.pxwidth ?? 28) implicitHeight: 22 radius: 4 color: active ? "#89b4fa" // blue active : urgent ? "#f38ba8" // red urgent : empty ? "transparent" // ghost empty : "#313244" // normal border.color: empty && !active ? "#585b70" : "transparent" border.width: empty && !active ? 1 : 0 Text { id: label anchors.centerIn: parent text: wsBtn.modelData.label ?? "" color: wsBtn.active ? "#1e1e2e" : "#cdd6f4" font.pixelSize: 12 font.family: "monospace" } MouseArea { anchors.fill: parent onClicked: { var proc = Qt.createQmlObject( 'import Quickshell.Io; Process { command: ["hyprctl","dispatch","workspace","' + wsBtn.modelData.id + '"]; running: true }', wsBtn) } } } } } }