249

Is there a free app that I can use to move a window from one monitor to the other monitor (assuming only two monitors) via the keyboard? I shouldn't have to use the mouse at all (e.g., for selecting the window or the monitor, or for dragging).

I know this can be done in Linux using compiz; I'm surprised there isn't a (free) option for OS X.

daviesgeek
  • 38,901
  • 52
  • 159
  • 203
volni
  • 2,968

17 Answers17

190

There is yet another option that's completely free and requires no third-party app. Be aware that I've only tested this on MacOS latest version Catalina (as of now). For other OS versions see Create keyboard shortcuts for apps on Mac

  1. Go to System Preferences
  2. Select Keyboard and then the Shortcuts tab
  3. Then on the list that appears select App Shortcuts
  4. Add new shortcuts like this:
    • Click on the plus sign to add a new one, the Menu Title field has to match exactly the text that appears on the Window menu in every application: "Move to DISPLAY NAME" (To find the text just open the Window menu on any application)
    • Finally on the Keyboard Shortcut field enter the shortcut you'd like to use
    • Add as many shortcuts as you need to move any window between your displays!

enter image description here

Honey
  • 236
  • 1
  • 2
  • 12
  • 34
    This should be the new correct answer. Also it should be noted, if you have multiple monitors of the same brand and model, it will toggle between them so you only need one shortcut for both/all screens – AtomRiot Mar 18 '20 at 15:41
  • 5
    works like a charm, this should be the correct answer. volni – Krishna Gupta Mar 25 '20 at 07:59
  • 2
    Yay! I'm just playing around now with my windows back and forth :D Joy! Thanks! Definitely the correct answer. – yair Mar 31 '20 at 21:12
  • @AtomRiot I respectfully disagree. While it's a nice option, it doesn't work well for multiple monitors (moving a window to the "right" monitor is useful in BTT). Additionally, this moves the window to a strange location on the monitor. BTT can both center the window on the other monitor, or make it fullscreen on the other monitor, both of which are useful options to have. – Oion Akif Jun 03 '20 at 19:45
  • 1
    system_profiler SPDisplaysDataType For external monitors this command will list displays (after the GPU it is attached to). – yzorg Jun 27 '20 at 17:45
  • 6
    "Move to Built-in Retina Display" for easy copy-paste – yzorg Jun 27 '20 at 18:06
  • 1
    I agree with @SkeletonBow - BTT allows you to cycle between any number of monitors with any names with no need to update the respective commands. The only minor disadvantage of the BTT technique is that it doesn't move the window in an animated fashion. – certainlyakey Jul 07 '20 at 08:21
  • Brilliant! Click on "Window" in the menu of any app, move the app to each display, look for "Move to Built-in Retina Display" (as above), or "Move to C27F390", for example. – Pierre Jul 20 '20 at 14:58
  • 25
    Unfortunately this only works for apps that have a "Window → Move" menu option. Not as convenient as the MS Windows "Windows Key + Shift + Right arrow". – Pierre Jul 20 '20 at 15:14
  • This solution works perfectly. I configured two shortcut same as MS Windows: CMD + Swift + Left/Right arrow. – P.O.W. Oct 03 '20 at 20:48
  • 2
    How did you know this would work? What design pattern from Apple made you figure this out? – Honey Nov 28 '20 at 19:10
  • It doesn't work for me. I'm using Mojave – Code42 Feb 09 '21 at 21:57
  • 12
    does not work if the Window is maximised. – Real Dreams Jun 29 '21 at 00:34
  • 1
    This works well for non-maximimized windows (if it's not working for you, try closing the Keyboard preferences for the hotkey to take effect). It doesn't work for maximized windows as the "Window > Move to..." options are disabled. [11.6 Big Sur] – Daniel Nov 04 '21 at 17:21
  • 2
    Thank you! and YES! I'm also playing with my windows now ;'DD It's working for my maximized windows (11.6 Big Sur). Does NOT work for FULL SCREEN windows. (Maximize is different from full screen on mac). You can maximize windows without going Full Screen: double-click toolbar (top bar) of any window. I used Opt+Ctrl+UP, Opt+Ctrl+DOWN (my screens are arranged vertically). – Lorgen GR Magpantay Feb 24 '22 at 08:35
  • Definitely the correct answer. And 3rd party apps (like Magnet) can only move non-maximized windows as well; those apps are just wrappers of functionality like what is provided natively in System Preferences. You just have to poke around. – WakaChewbacca Mar 30 '22 at 09:28
  • I'm not a Mac fan but this worked great, thank you!! – Aaron Belchamber Apr 20 '22 at 13:56
  • 1
    Unfortunately, it doesn't work on windows that are zoomed (in the fullscreen mode). – David Ferenczy Rogožan Apr 26 '22 at 01:50
  • Can't get this work with Gigabyte monitors. Is there any way to simply set a command to cycle an app through ALL displays? – Ben Racicot Feb 02 '23 at 16:34
  • For me it took 1-2 minutes to start working after I add shortcut – Bineesh Mar 21 '23 at 05:36
  • 1
    Note: I tested it In the Italian version of MacOS and you have to use the proper translation of the move command instead of using the English one Move, so it's seems to be language dependent depending on which software you re using; Eg: Xcode is English only and it displays "Move to Buil in retina display" while pages which is Italian displays "Sposta su Monitor Retina integrato" in italian). – Andrea Leganza Apr 01 '23 at 11:02
  • I've found it to be pretty picky about the shortcuts it will accept. Rectangle is still far less hassle, unfortunately. – Andrew Apr 07 '23 at 21:36
  • Doesn't work for me either – nZeus Jan 18 '24 at 10:04
145

UPDATE: Spectacle is no longer maintaned. The website forwards users to Rectangle, see Jack's answer or https://github.com/rxhanson/Rectangle/releases.


I just tried Spectacle, great app and it's free.

This is what it can do with the selected group of windows.

enter image description here

You need to activate accessibility support.

System Preferences > Accessibility > Enable access for assisted devices

As per comments: The accessibility option in Mavericks is now in

System Preferences > Security and Privacy > Privacy > Accessibility

enter image description here

enter image description here

yzorg
  • 103
rraallvv
  • 2,290
  • 1
    Worked for me without having to enable assistive devices in accessibility options. – Adrian Spinei Mar 03 '13 at 13:49
  • 2
    With OS X Mavericks, the option to enable access for assistive devices has moved to System Preferences -> Security and Privacy -> Privacy -> Accessibility, where you will see Spectacle listed and can allow it to control your computer. – nathan Oct 28 '13 at 14:54
  • To specifically identity the shortcut, Spectacle use the shortcuts, ⌃⌥⌘← & ⌃⌥⌘→ to alternate windows to each display. – Shawn Conn Jan 08 '16 at 05:19
  • I use Spectacle already, so I tried this... unfortunately the first thing I tried (my own Java / OpenGL app) – PeterT Feb 28 '16 at 08:14
  • 3
    it's awesome and can do many cool things that win7+ is able to do which I missed, BUT I couldn't make it do what the original question is asking - move the window across monitors. :( – kumetix Oct 09 '16 at 14:07
  • Spectacle now allows you to do this (click link for image). – Nick Jouannem Jan 24 '17 at 14:01
  • 1
    Works well. Although a way to move windows from one screen(not monitor) to other could be helpful. Works for the question asked. – Ajak6 Jun 16 '17 at 18:22
  • If the window is maximized, spectacle will not keep it maximized in the new monitor, so this is not a good solution IMO. shiftlt, mentioned in Wilfred Springer's answer, keeps the window maximized, so to me it seems to be the best solution – Elouan Keryell-Even Jan 05 '18 at 09:21
  • Spectacle is no longer maintained - check out Rectangle App instead, the replacement their team recommends: https://apple.stackexchange.com/a/379697/359074 – Jack Kinsella Jan 14 '20 at 14:15
  • Spectacle works on Catalina, but when a window is maximised it will not move it to another screen. So anyway I have to use the mouse to do it :( – hans Jan 20 '20 at 12:17
  • For me, using Rectangle, the "Next Display" & "Previous Display" seem to be disabled (greyed out in the dropdown menu). Other shortcuts are working fine. Any hints on why? Thanks in advance. – davneetnarang Jan 14 '21 at 13:53
  • Rectangle is a no go for me. It does not move windows from one monitor to another right, nor is it able to move it to the next desktop. – mjs Aug 02 '22 at 09:28
59

I ended up using BetterTouchTool to do this. Overall I found it to be the most configurable. Here is a screenshot of my configuration, whereas Cmd+Ctrl+W moves a window to the next monitor.

If you have a 3 monitor setup (2 external monitors and the Mac monitor), you can set up the "Move Window to Next Monitor" to the right by doing the following:

  1. set up a new shortcut, specify "Move Window to Next Monitor" as the Predefined Action
  2. click Attach Additional Action and again specify "Move Window to Next Monitor" as the action
  3. Voila, you can now move a window to the monitor on the right (a little hacky I know, but it works until the developer of BTT updates the app)

BetterTouchTool keyboard configuration

The only shortcoming of BetterTouchTool is poor Lion support (not all features are available) but it is available as an alpha release. This specific keyboard shortcut should work fine in Lion with the stable version, I reckon.

user3439894
  • 58,676
adamrmcd
  • 1,540
  • 3
    Oh, and it's freeware. – adamrmcd Nov 06 '11 at 03:50
  • I've gotten rid of Moom (almost ran out of trial clicks) and am using it BTT now. I feel like BTT can be slimmed down and polished but it does move windows from one monitor to another for free, so I can't complain. – volni Nov 08 '11 at 21:15
  • 9
    It's not freeware now. Donationware. – vr_driver Mar 15 '16 at 02:19
  • 7
    As far as I could tell, BTT is no longer free (there's a free trial though) – guyarad Jul 04 '16 at 06:05
  • 4
    It's 2019 this answer suggested a commercial solution, use the other A'er if you'd rather not have to pay for an app to do something that the OS should prob. be doing for you for free. – slm Feb 20 '19 at 01:21
  • Heh, great trick with moving the window twice. <3 – udondan May 26 '20 at 07:00
37

Check out Rectangle App. It's free, open-source, and is billed as the spiritual successor to the once brilliant (but sadly, no-longer-maintained) Spectacle.

You can install Rectangle App either via their website or with Homebrew: brew install --cask rectangle

enter image description here

nohillside
  • 100,768
21

Moom can do this. It is not free, but Moom is a fantastic window management app. It lets you assign keyboard shortcuts to a variety of windows movements (including move to other display) and gives you an overlay of the OS X standard window controls.

Here are some screenshots:

mouse usage keyboard usage

Here is a list of window management apps from another AskDifferent post, What Window Management Options exist for OS X?. The only free option is Shiftit, and I'm not sure if it offers the functionality you are looking for.

  • I've been using ShiftIt for arranging windows within the same monitor. It's an excellent tool for that. However, it offers no move-to-other-display functionality. – volni Oct 20 '11 at 20:12
  • I'd check out Moom then. I know you wanted a free app, but it's quite inexpensive compared to many other Mac window managers. Plus, the overlay they designed for close/min/maximize buttons is so spiffy that they deserve the $5. :) – chrismanderson Oct 20 '11 at 20:14
  • @ArtemShnayder no longer true, ver 1.6 released this year now supports it; check out @WilfredSpringer 's answer – tutuDajuju Oct 30 '14 at 08:06
  • As far as I can tell, Moom is the only one that will let you move a window to the display in a given direction (up, down, left, right). The others just have "next display". – MatrixManAtYrService Aug 01 '23 at 17:00
21

macOS Big Sur has built-in tool to do this. Press/click on the green button on top of a window for a second to get a dropdown with options for the current windows.

enter image description here

nohillside
  • 100,768
  • 11
    There is no keyboard shortcut for this though, right? – nohillside Jan 31 '21 at 13:31
  • 8
    Yes but I figure it's worth pointing out that now this window moving to other display thing is baked in the OS – John Indra Jan 31 '21 at 13:54
  • 4
    It's not a Big Sur Specific, it's been there for a couple of earlier versions. – Mahbub May 10 '21 at 06:32
  • 1
    is there a way to do this without the mouse being used on a display? I just cracked my macbook display and am trying to move windows over from there to an external monitor to save some work but can't exactly see what I'm doing. – jxramos Aug 12 '22 at 20:43
  • Actually, it looks like from the Dock you can right click an app, then select Options, then select Desktop on Display 1 or Desktop on Display 2, etc. – jxramos Aug 12 '22 at 20:56
16

I was using ShiftIt for ages.

However, I thought it didn't support dealing with multiple displays, so I started looking for alternatives. I installed Spectacle, and changed the key bindings to be the same as ShiftIt's.

Then, when I wanted to deinstall ShiftIt, I found out it does actually support moving windows to different screens, using: CtrlOptionCommandN

So I uninstalled Spectacles; still a happy ShiftIt user.

V2Blast
  • 116
  • 9
  • Default for me was Ctrl+Option+Command+Space – Mordred Jul 12 '17 at 16:36
  • This should be the correct answer. It works. – ji-ruh Jul 25 '17 at 03:33
  • 3
    If the window is maximized, shiftlt will keep it maximized in the next display, contrary to spectacle. Best solution IMO :) – Elouan Keryell-Even Jan 05 '18 at 09:16
  • ShiftIt won! Spectacle is not able to un-zoom a window. It has an option called Fullscreen, that's actually not MacOS' fullscreen (zoom), but maximize. And when a window is in the fullscreen (zoomed) mode, Spactacle is unable to control it at all. But ShiftIt is able to un-zoom it and then it's possible to move it to another display. – David Ferenczy Rogožan Apr 26 '22 at 02:09
16

Just wanted to mention that there's a setting in System Preferences > Mission Control called "Group windows by application" that shows the app icons and allows you to drag the icon into another desktop/monitor. It's amazing for apps that have 10+ windows.

  • This only seems to work though if all windows are already on the same space (not if they are distributed between spaces). – Patrick Feb 02 '21 at 17:08
13

FYI, Magnet, the popular window placement/sizing application, has "Next Display" and "Previous Display" shortcuts right out of the box, at least in version 2.1 (Feb 14, 2017).

Magnet on the Mac App Store

Magnet's Website

chuuke
  • 231
6

BetterSnapTool also has this feature (as a shortcut). I think it was a free app, and its been a great one.

There is a shortcut where you can maximize the window in the next screen (among other shortcuts or ways of doing this). See the screenshot of the related shortcuts.

enter image description here

6
Lri
  • 105,117
5

If you don't want to install any third-party software, you can switch the current window to any monitor by going to the following menu

Window -> Select the monitor / display name

If the menu is not enabled, Click on the green button enter image description here, to come out of full screen to enable the below menu then click,

Window -> Select the monitor / display name

Also after coming off of full screen mode, if you mouse over on the green button, you can get a pop-up with the option to "move to desired screen", click on it to move it to the desired screen.

enter image description here

Hope this helps

Anandkumar
  • 103
  • 2
5

building on the answer above, using native Mac controls. There is a menu item that you can use to move apps between screens. It does not have a keyboard shortcut though which is what I was looking for. But there's hope! Using keyboard shortcuts, you can create your own shortcuts to move windows between screens. Here's how:

Find the name of the menu item you want to create a shortcut for: Click Window in any application and look for a menu item that says "Move to "

Create a keyboard shortcut to do it: Open keyboard settings (System preferences -> Keyboard). Choose "App Shortcuts". Click + to create a new shortcut. Set Application to "All Applications". Set Menu Title to exactly the menu item wording you found above Set the keyboard shortcut you want to use

If you did this successfully, you should now see the shortcut appear next to the menu item and using your keyboard should moved the window to the other screen.

NOTES: You will need to do the steps above to create a shortcut for each screen you have. To get the screen names, you'll need to move applications to each screen and see what the menu item changes to and then create a shortcut for that screen.

When I first did this, the shortcut didn't work. I suspect I chose a keyboard shortcut that was already in use somewhere else. I fixed this by using the Command, Option, and Control buttons as part of the shortcut

This works for almost every app I have but one app doesn't support this because it doesn't have the menu item

  • This should be the selected answer, works perfectly! – C0D3 Oct 22 '21 at 18:18
  • What do you mean by "the answer above"? The order answers are displayed in can change based on the chosen sorting mechanism, votes on the answers themselves changing, and new answers coming in. In general, answers should stand on their own; if you do refer to another answer, you should summarize/quote the relevant parts of that answer in your own answer in case that answer is edited, deleted, or moved. – V2Blast Oct 27 '21 at 17:08
  • This works, but not with Firefox for some reason on macOS 13 (and even when it does work with, say Chrome, it seems buggy, probably a Ventura problem) – muru Nov 02 '22 at 07:17
1

This open source app is simple easy to use and free. It will accomplish what you need.

https://www.spectacleapp.com/

1

Inspired by Wellington Felix's answer, with the same caveat that it only works for apps that have a "Window → Move" option.

  1. Activate Help menu: Shift/
  2. Search for Move to <display name>
  3. Enter

or

  1. Activate Help menu: Shift/
  2. Go to Window menu:
  3. Use m and arrow keys to select desired display
  4. Enter
victorlin
  • 597
1

There is a tool for more advanced users called Hammerspoon. With this, you can achieve a lot of things and as this answer on a question on StackOverflow pointed out, it's pretty easy to achieve what you want with a simple Hammerspoon configuration.

Hammerspoon is not exactly an app, but it might still be interesting for some users.

-- From https://stackoverflow.com/a/58662204
hs.hotkey.bind({'alt', 'ctrl', 'cmd'}, 'n', function()
  -- Get the focused window
  local win = hs.window.focusedWindow()
  -- Get the screen where the focused window is displayed, a.k.a. current screen
  local screen = win:screen()
  -- Compute the unitRect of the focused window relative to the current screen
  -- and move the window to the next screen setting the same unitRect 
  win:move(win:frame():toUnitRect(screen:frame()), screen:next(), true, 0)
end)
  • +1 for Hammerspoon ... very useful tool. Maybe should point out that one can also use win:moveOneScreenEast() and the like (there's one function for each direction). It's useful to bind arrow keys to effect the keyboard shortcuts. http://www.hammerspoon.org/docs/hs.window.html#moveOneScreenEast – Travelling Man Apr 22 '23 at 21:41
0

This can also be done using the free, open-source tiling window manager Amethyst using the "Swap focused window to (counter-)clockwise screen" shortcut.

enter image description here