From 17dafd3586db4db77801dc72788b60934b43f966 Mon Sep 17 00:00:00 2001 From: Kiran George Date: Sat, 9 Aug 2025 16:28:51 +0530 Subject: Overview multimonitor fix --- .../quickshell/modules/overview/OverviewWidget.qml | 40 ++++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) (limited to 'config/quickshell/modules/overview/OverviewWidget.qml') diff --git a/config/quickshell/modules/overview/OverviewWidget.qml b/config/quickshell/modules/overview/OverviewWidget.qml index 93e90967..05a15e10 100644 --- a/config/quickshell/modules/overview/OverviewWidget.qml +++ b/config/quickshell/modules/overview/OverviewWidget.qml @@ -46,6 +46,33 @@ Item { property int draggingFromWorkspace: -1 property int draggingTargetWorkspace: -1 + // Debug logging function + function debugMultiMonitorInfo() { + console.log("=== Multi-Monitor Debug Info ===") + console.log("Current monitor ID:", root.monitor.id) + console.log("Current monitor name:", root.monitor.name) + console.log("Current monitor scale:", root.monitor.scale) + console.log("Current monitor position:", root.monitor.x, root.monitor.y) + console.log("Total monitors:", HyprlandData.monitors.length) + + HyprlandData.monitors.forEach((mon, idx) => { + console.log(`Monitor ${idx}: ID=${mon.id}, Name=${mon.name}, Scale=${mon.scale}, Pos=(${mon.x},${mon.y}), Size=${mon.width}x${mon.height}, Reserved=[${mon.reserved.join(",")}]`) + }) + + console.log("Total windows:", windowAddresses.length) + windowAddresses.forEach((address, idx) => { + const win = windowByAddress[address] + if (win) { + console.log(`Window ${idx}: ${win.class} on monitor ${win.monitor}, workspace ${win.workspace?.id}, pos=(${win.at[0]},${win.at[1]})`) + } + }) + console.log("=== End Debug Info ===") + } + + Component.onCompleted: { + debugMultiMonitorInfo() + } + implicitWidth: overviewBackground.implicitWidth + Appearance.sizes.elevationMargin * 2 implicitHeight: overviewBackground.implicitHeight + Appearance.sizes.elevationMargin * 2 @@ -233,14 +260,21 @@ Item { model: ScriptModel { values: windowAddresses.filter((address) => { var win = windowByAddress[address] - return (root.workspaceGroup * root.workspacesShown < win?.workspace?.id && win?.workspace?.id <= (root.workspaceGroup + 1) * root.workspacesShown) + if (!win) return false + + // Filter by workspace group AND monitor if configured + const inWorkspaceGroup = (root.workspaceGroup * root.workspacesShown < win?.workspace?.id && + win?.workspace?.id <= (root.workspaceGroup + 1) * root.workspacesShown) + const inMonitor = ConfigOptions.overview.showAllMonitors || win.monitor === root.monitor.id + + return inWorkspaceGroup && inMonitor }) } delegate: OverviewWindow { id: window windowData: windowByAddress[modelData] - monitorData: HyprlandData.monitors.find(m => m.id === windowData?.monitor) // use monitorData of the monitor the window is on - scale: root.scale * (monitorData?.scale / root.monitor?.scale) // adjust window scale to the monitor where the overview is displayed + monitorData: root.monitorData + scale: root.scale availableWorkspaceWidth: root.workspaceImplicitWidth availableWorkspaceHeight: root.workspaceImplicitHeight -- cgit v1.2.3