forked from Shinonome/dots-hyprland
60 lines
1.5 KiB
QML
60 lines
1.5 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
import qs.services
|
|
import qs.modules.common
|
|
import qs.modules.waffle.looks
|
|
|
|
MouseArea {
|
|
id: root
|
|
|
|
Layout.fillHeight: true
|
|
implicitHeight: appRow.implicitHeight
|
|
implicitWidth: appRow.implicitWidth
|
|
hoverEnabled: true
|
|
|
|
function showPreviewPopup(appEntry, button) {
|
|
previewPopup.show(appEntry, button);
|
|
}
|
|
|
|
Behavior on implicitWidth {
|
|
animation: Looks.transition.move.createObject(this)
|
|
}
|
|
|
|
WListView {
|
|
id: appRow
|
|
anchors {
|
|
top: parent.top
|
|
bottom: parent.bottom
|
|
}
|
|
orientation: Qt.Horizontal
|
|
spacing: 0
|
|
implicitWidth: contentWidth
|
|
clip: true
|
|
interactive: false
|
|
// TODO: Include only apps (and windows) in current workspace only | wait, does that even make sense in a Hyprland workflow?
|
|
model: ScriptModel {
|
|
objectProp: "appId"
|
|
values: TaskbarApps.apps.filter(app => app.appId !== "SEPARATOR")
|
|
}
|
|
delegate: TaskAppButton {
|
|
required property var modelData
|
|
appEntry: modelData
|
|
|
|
onHoverPreviewRequested: {
|
|
root.showPreviewPopup(appEntry, this);
|
|
}
|
|
onHoverPreviewDismissed: {
|
|
previewPopup.close();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Previews popup
|
|
TaskPreview {
|
|
id: previewPopup
|
|
tasksHovered: root.containsMouse
|
|
anchor.window: root.QsWindow.window
|
|
}
|
|
}
|