Repository navigation
Move window to display where cursor #1908
Description
Settings → Behavior → Across Display Settings: Gets new option + hint
☑︎ Move window to display where cursor
All move commands will move the focused window to its target position on the display where the cursor currently resides.
Operation
- Focus the window you want to move.
- Optional: Move the cursor (=mouse pointer) to another display where the window shall be positioned on.
- Note: If you keep your cursor where it is, then the window will simply move within the same display.
- Trigger window move command (e.g. "Left" (
⌃ ⌥ ←) or "Bottom" (⌃ ⌥ ↓) )
Usability Rationale & Best Practise
- For smooth & efficient tile based window positioning in a multi display setup this workflow is superb!
- Divvy, my current window manager, has this behavior hardcoded, and it served me really well over the years.
- Sadly it's an Intel binary, no longer maintained, and will not run anymore on macOS 28.
The current workarounds for step 2 with Rectangle
- Move window to other display by dragging
OR
-
Trigger shortcut for "Next Display".
- Note: On a 2 monitor setup this effectively is "Toggle Display", so this itself needs no further thought. On a 3 monitor setup if you know their index order, you can reach any target by "Next Display" or "Previous Display". Already more mental load. Mishaps happen for sure. With a 4 display setup it becomes bloated multi step operation guaranteed.
Any or these workarounds: Too much mental load!
- Whereas with the proposed workflow it's smooth and fast.
- Your eyes and trackpad move in concert to your intended display.
- There you press your intended position hotkey and are done in one pass.
Compatibility & Consistency
How does Move window to display where cursor interact with existing options?
1) Move cursor along with window across displays
When the commands Previous Display or Next Display get executed, then Move cursor along with window across displays takes precedence over Move window to display where cursor.
When any tiling commands (e.g. "Left" (⌃ ⌥ ←) or "Bottom" (⌃ ⌥ ↓) ) get executed, then Move window to display where cursor takes precedence over Move cursor along with window across displays.
✅ Scenario 1a
Move cursor along with window across displays: ONMove window to display where cursor: OFF- This is the status quo. Works.
✅ Scenario 1b
Move cursor along with window across displays: OFFMove window to display where cursor: ON- Works well too, best practice: Divvy
✅ Scenarios 1c
Move window to display where cursor: ONMove cursor along with window across displays: ON
Usually you utilize Move window to display where cursor.
- But in rare situations you want hands on keyboard-only.
- Need to move window to next screen.
- But this time without moving a hand to trackpad/mouse
- And want the cursor close, thereafter
- Seems unlikely. But works conflict free in numerous variations, for those who need it (occasionally / as an amendment).
✅ Scenario 1c1
- Start
- Screen 1: Focused window
- Screen 2: ---
- Screen 3: Cursor
- Command "Next Display"
- Screen 1: ---
- Screen 2: Focused window + Cursor
- Screen 3: ---
- Explanation:
- Screen 2 was next in index, thus window moved there
- Cursor moved to screen 2 because of
Move cursor along with window across displays Move cursor along with window across displaystakes precedence when triggered by the "Prev/Next Display" command
✅ Scenario 1c2
- Start
- Screen 1: Focused window + Cursor
- Screen 2: ---
- Command "Next Display"
- Screen 1: ---
- Screen 2: Focused window + Cursor
- Explanation
- Screen 2 was next in index, thus window moved there
- Cursor moved to screen 2 because of
Move cursor along with window across displays Move cursor along with window across displaystakes precedence when triggered by the "Prev/Next Display" command
2) Repeated commands which involve display cycling
Settings → Behavior → Repeated commands: Options which involve display cycling
- Cycle through displays
- Move to adjacent display on left or right
- Move to adjacent on left/right, or cycle size on side
Governance:
A combination of a tiling command (e.g. "Left" ⌃ ⌥ ←) with Move window to display where cursor ON results the tile moving to a new screen.
- Then triggering the same tiling command cannot be reasonable be considered a repetition!
- You wanted it "Left on that new screen" where it anyhow needs to sit itself potentially into a different screen resolution and/or aspect ratio.
- Only another invocation of the very same tile command is then a user intent for a repeat command.
✅ Scenario 2a
Move window to display where cursor: ONRepeated commands: Cycle sizes on side actions- Start
- Screen 1: Focused window Maximized + Cursor
- Screen 2: ---
- Screen 3: ---
- Command "Left"
⌃ ⌥ ←- Screen 1: Focused window Left + Cursor
- Screen 2: ---
- Screen 3: ---
- User moves cursor to screen 3 → All keyboard command invocation counters get reset to 0
- Screen 1: Focused window Left
- Screen 2: ---
- Screen 3: Cursor
- Command "Left"
⌃ ⌥ ←→ Considered the first invocation (on the new screen!)- Screen 1: ---
- Screen 2: ---
- Screen 3: Focused window Left + Cursor
- Command "Left"
⌃ ⌥ ←→- Screen 1: ---
- Screen 2: ---
- Screen 3: Focused window Left now grown a bit towards the right + Cursor
✅ Scenario 2b
Move window to display where cursor: ONRepeated commands: Any option which moves the tile to another screen- When this constellation arises, both options get this extra hint text below them:
The option Move window to display where cursor is ignored when Repeated commands is set to any of the options which effectively moves the window to another screen.
Activity
rxhanson commentedon Oct 12, 2026
Makes sense to me. I don't have the bandwidth to add this in myself at the moment, but would welcome a good pull request for it.
porg commentedon Oct 12, 2026
Glad that the feature makes sense to you as the project owner.
I'm a UX designer by trade. The best I could try regarding implementation and PR is:
Kiizon commentedon Oct 13, 2026
@porg I've opened a PR for this: #1913
It shows the "Move window to display where cursor is" setting under Across Display Settings. When it's on, commands move the window to the display under the cursor. It also fixes the repeat problem: if you move the cursor to another display, the next press starts fresh there instead of continuing on the old display. If the cursor stays put, repeats behave the same as with the setting off.
I tested it on two monitors with halves and thirds, and all tests pass. One caveat: my Mac can't run Xcode 27, so I built it with Xcode 26.0.1 plus a few local-only changes to get it compiling (not included in the PR). Could you or someone with Xcode 27 build it and give it a quick try on a multi-display setup? Thanks!
Move window to the display under the cursor (rxhanson#1908)
porg commentedon Oct 13, 2026
@Kiizon thanks for your implementation! So quick! Glad that this issue caught the momentum!
@rxhanson & @Kiizon & others:
rxhanson commentedon Oct 14, 2026
I'm still working my way through the queue of pull requests, so it'll still be a bit before I get to this. Although you were looking for something signed, if you want to try something sooner you can try the unsigned build from GitHub actions: https://github.com/rxhanson/Rectangle/actions/runs/38465694777/artifacts/11864920882
porg commentedon Oct 14, 2026
@rxhanson thanks for pointing me to the build artifact!
porg commentedon Oct 14, 2026
Build from 2026-10-14 01:51 UTC on macOS 15 (Apple Silicon).
TL;DR
My testing feedback
My test setup
Screen Arrangement: Both physically and in
System Settings→Displays→Arrangement:Terminology
Left(Half) orTop Right(Quarter) orTop Center SixthNext DisplayorPrevious DisplayLargerorSmallerorLarger WidthorSmaller WidthUX assumptions & Terminology
Move window to display where cursor.Move cursor along with window across displays.Move cursor along with window across displaysandMove window to display where cursoractivated and who use relative move commands such asNext Display.Options that I ignored for interplay and at which values I left them
Options that I inspected on their own and in terms of interplay
Configuration X
Do nothingorCycle sizes on side actions☑️ Move window to display where cursor🔲 Move cursor along with window across displaysObservations
Configuration A
Cycle sizes on side actionsorCycle positions on quadrants, cycle sizes on side☑️ Move window to display where cursor☑️ Move cursor along with window across displaysScenario
☑️ Move cursor along with window across displayswhich does not kick in when focused window and cursor are on the same screen.Repeated commandsdirective.☑️ Move window to display where cursor.Move cursor along with window across displaysif not using a "Keyboard first" operation paradigm.Move cursor along with window across displaysgets this hint (and behavioral change in code)Move window to display where cursorandRepeated commands→Cycle sizes on side actions.Configuration B
Cycle through displays☑️ Move window to display where cursor🔲 Move cursor along with window across displaysScenario
Top Left)Top Right)Top Right) (multiple times)Configuration C
Cycle through displaysScenario
Top Left)Cycle through displayskicks in.Move cursor along with window across displaysMove cursor along with window across displays).Move cursor along with window across displaysand you can still enjoy a mixed operation paradigm.Move window to display where cursorNext DisplayorPrevious DisplayMove cursor along with window across displayswhich if keyboard focused temporarily may not even matter, and if you need the cursor, then you do the effort of moving it along manually. Totally acceptable.Repeated commands==Cycle through displays&&Move cursor along with window across displays== ON &&Move window to display where cursor== ON)Move cursor along with window across displaysthe tileCommand("particular tile like e.g. Left").repetitions counter gets set to 1 so that it's next invocation already considers it a repetition.