From c22c0a0b3333217c8203b4b9fdf5b48e847065c1 Mon Sep 17 00:00:00 2001 From: Elie Gambache Date: Tue, 3 Feb 2026 19:52:15 +0200 Subject: [PATCH] Fix KDE tray window opening at wrong position on multi-monitor setups Use multi-monitor aware TrayClickTracker.updateClickPosition() instead of computing corner position from primary display size. This resolves incorrect window positioning when the system tray is on a non-primary display. Fixes #347 --- .../com/kdroid/composetray/lib/linux/LinuxTrayManager.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/commonMain/kotlin/com/kdroid/composetray/lib/linux/LinuxTrayManager.kt b/src/commonMain/kotlin/com/kdroid/composetray/lib/linux/LinuxTrayManager.kt index 67d1388..d381d09 100644 --- a/src/commonMain/kotlin/com/kdroid/composetray/lib/linux/LinuxTrayManager.kt +++ b/src/commonMain/kotlin/com/kdroid/composetray/lib/linux/LinuxTrayManager.kt @@ -6,7 +6,6 @@ import com.kdroid.composetray.utils.warnln import com.kdroid.composetray.utils.TrayClickTracker import io.github.kdroidfilter.platformtools.LinuxDesktopEnvironment import io.github.kdroidfilter.platformtools.detectLinuxDesktopEnvironment -import java.awt.Toolkit import java.io.File import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit.MILLISECONDS @@ -162,10 +161,8 @@ internal class LinuxTrayManager( go.Systray_GetLastClickXY(xRef, yRef) val x = xRef.value val y = yRef.value - // Infer corner and persist for Linux positioning - val screen = try { Toolkit.getDefaultToolkit().screenSize } catch (_: Throwable) { java.awt.Dimension(0,0) } - val pos = com.kdroid.composetray.utils.convertPositionToCorner(x, y, screen.width, screen.height) - TrayClickTracker.setClickPosition(x, y, pos) + // Use multi-monitor aware position tracking that resolves the correct screen bounds + TrayClickTracker.updateClickPosition(x, y) } catch (_: Throwable) { // ignore, still invoke user callback }