86 lines
2.6 KiB
QML
86 lines
2.6 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import Quickshell.Hyprland
|
|
|
|
import "../../config" as Cfg
|
|
import "../../components"
|
|
|
|
ModuleChip {
|
|
id: root
|
|
|
|
width: workspaceLayout.implicitWidth + 24
|
|
height: Cfg.Config.moduleHeight
|
|
chipColor: t.wsPanelBg
|
|
chipBorderColor: t.wsPanelBorder
|
|
|
|
property string activeSpecial: ""
|
|
property string lastActiveName: ""
|
|
|
|
Connections {
|
|
target: Hyprland
|
|
function onRawEvent(event) {
|
|
if (event.name === "activespecial") {
|
|
var name = event.data.split(",")[0]
|
|
root.activeSpecial = name
|
|
}
|
|
if (event.name === "workspace") {
|
|
root.lastActiveName = event.data
|
|
}
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
id: workspaceLayout
|
|
anchors.centerIn: parent
|
|
spacing: 6
|
|
|
|
Repeater {
|
|
model: Hyprland.workspaces
|
|
|
|
Rectangle {
|
|
id: wsPill
|
|
|
|
visible: modelData.name !== "special:magic"
|
|
|
|
property bool isSelected: modelData.active || (root.activeSpecial !== "" && modelData.name === root.lastActiveName)
|
|
|
|
Layout.preferredWidth: isSelected ? 34 : 28
|
|
Layout.preferredHeight: 22
|
|
radius: 11
|
|
|
|
color: {
|
|
if (isSelected && root.activeSpecial !== "") {
|
|
return root.t.wsMagicActiveBg
|
|
}
|
|
if (modelData.active) {
|
|
return root.t.wsActiveBg
|
|
}
|
|
return wsHover.hovered ? root.t.wsHoverBg : root.t.wsInactiveBg
|
|
}
|
|
|
|
Behavior on color { ColorAnimation { duration: 200 } }
|
|
Behavior on Layout.preferredWidth { NumberAnimation { duration: 200 } }
|
|
|
|
Text {
|
|
anchors.centerIn: parent
|
|
text: modelData.name
|
|
font.pixelSize: 11
|
|
font.bold: true
|
|
color: {
|
|
if (isSelected && root.activeSpecial !== "") {
|
|
return root.t.wsMagicActiveText
|
|
}
|
|
if (modelData.active) {
|
|
return root.t.wsActiveText
|
|
}
|
|
return wsHover.hovered ? root.t.wsHoverText : root.t.wsInactiveText
|
|
}
|
|
}
|
|
|
|
HoverHandler { id: wsHover; cursorShape: Qt.PointingHandCursor }
|
|
TapHandler { onTapped: modelData.activate() }
|
|
}
|
|
}
|
|
}
|
|
}
|