add quickshell bar

This commit is contained in:
Johannes Knopp
2026-04-06 01:30:28 +02:00
parent 8d95eeb892
commit c2b28df404
15 changed files with 1043 additions and 0 deletions

View 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)
}
}