Files
quickshell_bar/widgets/Workspaces.qml
2026-05-31 09:28:44 +02:00

55 lines
1.8 KiB
QML

import QtQuick
import QtQuick.Layouts
import Quickshell
import Quickshell.I3
import "../config"
// Sway/i3 workspace switcher for a single monitor.
Row {
id: root
required property var screen // ShellScreen this bar lives on
spacing: Theme.gap
// Name of the i3/sway output this bar is on, used to filter workspaces.
readonly property string monitorName: screen ? screen.name : ""
Repeater {
model: I3.workspaces
Rectangle {
id: chip
required property var modelData
// only show workspaces belonging to this monitor
// I3Workspace.monitor is an I3Monitor object, so compare its name
visible: modelData.monitor && modelData.monitor.name === root.monitorName
width: visible ? Math.max(height, label.implicitWidth + 16) : 0
height: Theme.barHeight - Theme.gap * 2
radius: Theme.radius
readonly property bool isFocused: modelData.focused
readonly property bool isUrgent: modelData.urgent
color: isUrgent ? Theme.red
: isFocused ? Theme.blue
: modelData.active ? Theme.surface1
: Theme.surface0
Text {
id: label
anchors.centerIn: parent
text: chip.modelData.name
font.family: Theme.font
font.pixelSize: Theme.fontSize
font.bold: chip.isFocused || chip.isUrgent
color: (chip.isFocused || chip.isUrgent) ? Theme.mantle : Theme.text
}
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: chip.modelData.activate()
}
}
}
}