window switcher start

This commit is contained in:
Zacharias-Brohn
2026-01-27 14:16:23 +01:00
parent b41b8467bf
commit 159920eb99
14 changed files with 232 additions and 767 deletions
+84
View File
@@ -0,0 +1,84 @@
import Quickshell
import Quickshell.Hyprland
import Quickshell.Wayland
import QtQuick
import QtQuick.Layouts
import qs.Config
import qs.Components
import qs.Modules
import qs.Helpers
Item {
id: root
required property Item wrapper
required property ShellScreen screen
implicitWidth: layout.implicitWidth + 16
implicitHeight: layout.implicitHeight + 16
GridLayout {
id: layout
anchors.centerIn: parent
columnSpacing: 8
rowSpacing: 8
Repeater {
model: Hypr.workspaces
CustomRect {
id: workspacePreview
required property HyprlandWorkspace modelData
border.color: "white"
border.width: 1
radius: 8
Layout.preferredWidth: 320 + 10
Layout.preferredHeight: 180 + 10
Repeater {
model: workspacePreview.modelData.toplevels
Item {
id: preview
anchors.fill: parent
anchors.margins: 5
required property HyprlandToplevel modelData
property rect appPosition: {
let {
at: [cx, cy],
size: [cw, ch]
} = modelData.lastIpcObject;
cx -= modelData.monitor.x;
cy -= modelData.monitor.y;
return Qt.rect( (cx / 8), (cy / 8), (cw / 8), (ch / 8) )
}
CustomRect {
border.color: DynamicColors.tPalette.m3outline
border.width: 1
radius: 4
implicitWidth: preview.appPosition.width
implicitHeight: preview.appPosition.height
x: preview.appPosition.x
y: preview.appPosition.y - 3.4
ScreencopyView {
id: previewCopy
anchors.fill: parent
captureSource: preview.modelData.wayland
live: true
}
}
}
}
}
}
}
}