Files
illogical-impulse/dots/.config/quickshell/ii/modules/waffle/bar/tasks/Tasks.qml
T
2025-12-13 22:08:30 +01:00

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