add quickshell bar
This commit is contained in:
58
roles/quickshell/files/bar/WorkspaceButton.qml
Normal file
58
roles/quickshell/files/bar/WorkspaceButton.qml
Normal file
@ -0,0 +1,58 @@
|
||||
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
|
||||
property string appClass: modelData.lastIpcObject["class"] ?? ""
|
||||
property var entry: appClass !== "" ? DesktopEntries.heuristicLookup(appClass) : null
|
||||
|
||||
width: 16
|
||||
height: 16
|
||||
|
||||
IconImage {
|
||||
anchors.fill: parent
|
||||
source: iconItem.entry && iconItem.entry.icon !== ""
|
||||
? "image://icon/" + iconItem.entry.icon
|
||||
: ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user