diff --git a/quickshell/Modules/Dock/Dock.qml b/quickshell/Modules/Dock/Dock.qml index 3e4b6297..4b9160eb 100644 --- a/quickshell/Modules/Dock/Dock.qml +++ b/quickshell/Modules/Dock/Dock.qml @@ -180,6 +180,7 @@ Variants { } // Hyprland implementation + Hyprland.focusedWorkspace; const filtered = CompositorService.filterCurrentWorkspace(CompositorService.sortedToplevels, screenName); if (filtered.length === 0) @@ -381,9 +382,7 @@ Variants { const globalX = buttonGlobalPos.x + dock.hoveredButton.width / 2 + adjacentLeftBarWidth; const tooltipHeight = 32; const tooltipOffset = dock.effectiveBarHeight + SettingsData.dockSpacing + SettingsData.dockBottomGap + SettingsData.dockMargin + barSpacing + Theme.spacingM; - const screenRelativeY = isBottom - ? (screenHeight - tooltipOffset - tooltipHeight) - : tooltipOffset; + const screenRelativeY = isBottom ? (screenHeight - tooltipOffset - tooltipHeight) : tooltipOffset; dockTooltip.show(tooltipText, globalX, screenRelativeY, dock.screen, false, false); return; } diff --git a/quickshell/Services/CompositorService.qml b/quickshell/Services/CompositorService.qml index ec7363fa..cbdef182 100644 --- a/quickshell/Services/CompositorService.qml +++ b/quickshell/Services/CompositorService.qml @@ -368,18 +368,26 @@ Singleton { let currentWorkspaceId = null; try { - const hy = Array.from(Hyprland.toplevels.values); - for (const t of hy) { - const mon = _get(t, ["monitor", "name"], ""); - const wsId = _get(t, ["workspace", "id"], null); - const active = !!_get(t, ["activated"], false); - if (mon === screenName && wsId !== null) { - if (active) { - currentWorkspaceId = wsId; - break; + if (Hyprland.monitors) { + const monitor = Hyprland.monitors.values.find(m => m.name === screenName); + if (monitor) + currentWorkspaceId = _get(monitor, ["activeWorkspace", "id"], null); + } + + if (currentWorkspaceId === null) { + const hy = Array.from(Hyprland.toplevels.values); + for (const t of hy) { + const mon = _get(t, ["monitor", "name"], ""); + const wsId = _get(t, ["workspace", "id"], null); + const active = !!_get(t, ["activated"], false); + if (mon === screenName && wsId !== null) { + if (active) { + currentWorkspaceId = wsId; + break; + } + if (currentWorkspaceId === null) + currentWorkspaceId = wsId; } - if (currentWorkspaceId === null) - currentWorkspaceId = wsId; } } @@ -387,7 +395,7 @@ Singleton { const wss = Array.from(Hyprland.workspaces.values); const focusedId = _get(Hyprland, ["focusedWorkspace", "id"], null); for (const ws of wss) { - const monName = _get(ws, ["monitor"], ""); + const monName = _get(ws, ["monitor", "name"], ""); const wsId = _get(ws, ["id"], null); if (monName === screenName && wsId !== null) { if (focusedId !== null && wsId === focusedId) { @@ -406,7 +414,6 @@ Singleton { if (currentWorkspaceId === null) return toplevels; - // Map wayland → wsId snapshot let map = new Map(); try { const hy = Array.from(Hyprland.toplevels.values);