With dock-position set to left or right and dock-show-on-all-monitors enabled, only monitors with a free edge in the dock direction receive a dock (hasDefinedEdge() in src/dock/monitorTopology.ts). In a typical horizontal multi-monitor row, the middle monitor never gets a lateral dock.
This safeguard exists for a reason: the auto-hide hot area uses a Meta.Barrier pressure barrier on the configured edge (src/dock/hotArea.ts). On an internal edge between two side-by-side monitors, that barrier would sit in the pointer's path when crossing screens, so the dock would pop up on every monitor transition and the barrier could interfere with pointer traversal.
The proposal is to make "Show Dock on All Monitors" literal, matching dash-to-dock and Ubuntu Dock behavior: every monitor gets a dock on the configured edge, including internal edges, with different handling for internal-edge docks. Internal edges should not get a Meta.Barrier or pressure hot area, so pointer crossing between monitors stays unaffected, and internal-edge docks should stay always visible or be governed by intellihide only, never revealed by edge pressure. The current safeguard can remain as a fallback for topologies where this is not possible.
The work would touch src/dock/monitorTopology.ts (monitor selection in all-monitors mode), src/dock/hotArea.ts (skip barrier creation on internal edges), src/dock/intellihide.ts (visibility rules for internal-edge docks), and the dock tests under tests/shell/dock/ plus the topology unit tests.
The settings copy was already clarified to state that only monitors with a free edge in the dock direction get a dock, which describes the current behavior.
With
dock-positionset toleftorrightanddock-show-on-all-monitorsenabled, only monitors with a free edge in the dock direction receive a dock (hasDefinedEdge()insrc/dock/monitorTopology.ts). In a typical horizontal multi-monitor row, the middle monitor never gets a lateral dock.This safeguard exists for a reason: the auto-hide hot area uses a
Meta.Barrierpressure barrier on the configured edge (src/dock/hotArea.ts). On an internal edge between two side-by-side monitors, that barrier would sit in the pointer's path when crossing screens, so the dock would pop up on every monitor transition and the barrier could interfere with pointer traversal.The proposal is to make "Show Dock on All Monitors" literal, matching dash-to-dock and Ubuntu Dock behavior: every monitor gets a dock on the configured edge, including internal edges, with different handling for internal-edge docks. Internal edges should not get a
Meta.Barrieror pressure hot area, so pointer crossing between monitors stays unaffected, and internal-edge docks should stay always visible or be governed by intellihide only, never revealed by edge pressure. The current safeguard can remain as a fallback for topologies where this is not possible.The work would touch
src/dock/monitorTopology.ts(monitor selection in all-monitors mode),src/dock/hotArea.ts(skip barrier creation on internal edges),src/dock/intellihide.ts(visibility rules for internal-edge docks), and the dock tests undertests/shell/dock/plus the topology unit tests.The settings copy was already clarified to state that only monitors with a free edge in the dock direction get a dock, which describes the current behavior.