374

It seems that Mac OS X 10.6.1 Snow Leopard has a tendency to leave some windows off-screen at times, especially when I disconnect an external monitor from my MacBook. How can I move the window back on-screen when it's not possible to grab the title bar and drag it back onto the screen?

XvsXP.com recommends adjusting your screen resolution downward to have off-screen windows "snap back into view" and then adjust your screen resolution back to its original setting. In OS X 10.4 Tiger, I had a script that brought all off-screen windows back on-screen, but in my upgrades to Leopard and now Snow Leopard, I don't seem to have that script.

Any better solutions out there?

5
  • You may want to check out a very similar question: Reset Mac OS X Windows Position after de-attaching external monitor
    – Chealion
    Oct 14, 2009 at 17:19
  • I've found that deleting the offending reference items from Interface Builder's plist sometimes helps. I've even tried to set the window's position via AppleScript with no luck.
    – user46323
    Aug 16, 2010 at 5:28
  • I was able to recover an x11 window by moving the spawning display over to the other side of an adjacent display. In other words, I had the following arrangement with my monitors [ 2 ][1], and the x11 window was spawning off-screen to the apparent left of [1]. By rearranging: [1][ 2 ], my x11 window correctly appeared on window [1]. I'm on OS X 10.10.
    – jyalim
    Jan 10, 2015 at 20:57
  • Astonishing that in 2023 this is still an issue - and it is: just bit me.
    – davidbak
    Mar 11, 2023 at 3:37
  • I don't have enough rep to add an answer, but with Big Sur and newer you can use [Ctrl] + [Opt] + [Cmd] + [←] or [→] to move from the "disconnected monitor" or the "phantom monitor" to the active monitor. The arrow key direction doesn't always match the arrangement; try both arrow keys, one at a time: apple.stackexchange.com/a/462465/501701
    – James
    Jul 25, 2023 at 14:23

22 Answers 22

405

This method seems to work: click on the Window menu, then click Zoom

17
  • 9
    For the first time in months, I just ran into this problem with Parallels. Unfortunately, they don't have a zoom menu option under the Window menu. Jan 15, 2010 at 15:25
  • The next answer should work for all applications. Sep 8, 2013 at 20:35
  • 6
    Zoom didn't work for me. Now the window is just bigger, but still not where I can reach it.
    – bugloaf
    Mar 18, 2014 at 3:35
  • 21
    Great solution, except Photoshop has it's own non-standard implementation of the Window menu, and has no zoom option. Bloody Adobe. Jul 9, 2014 at 6:22
  • Worked for iTunes. Never seen that option before; I always assumed it'd be called "maximise". Jazzy! Sep 25, 2014 at 10:40
149

Haven't read through the whole thread but the easiest way I found was to change the resolution of the screen:

Go to System preferences » Displays and then change the resolution.

This will force your computer to render the display again and reposition all open windows. Then just switch it back to your original resolution settings and everything should be back in place.

10
  • 4
    In my case, the app (xScope) didn't have a Zoom option, and my new Mountain Lion build wasn't showing a "detect displays" function, so this tip worked perfectly. Thanks!
    – Jon
    Aug 5, 2012 at 16:07
  • +1 worked for me too. (On Lion trying to get the iPhone Simulator window). Zoom was disabled for this app. What makes this easier is having the Displays button in the menu bar (System Preferences->Displays->Show displays in menu bar) - this way you can quickly change resolution or detect displays
    – Rhubarb
    Oct 12, 2012 at 16:54
  • Also worked with Virtual Box, which was full screen in another (non-existent) display. I didn't have a menu bar at all. Thanks.
    – mwilson
    Oct 4, 2013 at 13:44
  • Didn't work for me. I resized the display, but the window is still sitting out of reach. I can see it in Mission Control, but I can't touch it, so maddening!
    – bugloaf
    Mar 18, 2014 at 3:37
  • 3
    Rotating 90 degrees and reverting worked for me.
    – mjhm
    Apr 16, 2014 at 22:34
61

If you can see a portion of the window, hold down the Option key and then click on one of the borders of the window. This will allow you to drag the window into full view.

7
  • 1
    I voted another answer up a long time ago, but now on a different OS, This worked for me. It's like holding alt and dragging a new shape in adobe programs!
    – ntgCleaner
    Jun 4, 2015 at 0:59
  • This has worked flawlessly for me with a number of X11 applications that insist on opening up outside of the viewable space of my desktop. I typically see just a little bit of these windows and the above tip has worked to allow me to drag them back into view.
    – slm
    Jun 22, 2015 at 20:13
  • I had to hold Shift-Option for this to work ... but ... fanstastic, thanks! Oct 16, 2015 at 0:28
  • Neither Option or Shift-Option is working for me in Yosemite with FileZilla :|
    – DemiSheep
    Oct 22, 2015 at 16:40
  • Thanks! This also allows me to resize photoshop when it's off screen. Seems like the only answer that work on all app windows!
    – dval
    Feb 29, 2016 at 11:21
56

Three ideas:

  • CmdF1 (or CmdfnF1 if you've configured your MacBook's keyboard to use normal function keys) toggles your displays between mirror mode and extended desktop. A side effect is that windows get moved around somewhat unpredictably. This might move the missing window to somewhere visible. This likely requires the external monitor to be connected though.

  • Turn on Spaces, hit the hot key to displays the spaces overview and see if your missing window outline is visible there. If so, drag it to where you want it to be.

  • Quit the application and relaunch. Definitely a non-ideal solution and not practical if there's unsaved work.

4
  • Toggling between mirror mode and extended desktop didn't work. I decided to quit Parallels, which brought up a dialog box prior to quitting. With the dialog box up, I moved the Parallels window back on screen and then selected "Cancel" from the "Are you sure you want to quit?" dialog box. Still wish there were a better way. Jan 15, 2010 at 15:30
  • Your first option worked for me. I have a macbook Pro with two monitors attached. I don't use the macbook as a screen. Cmd F1 worked like a charm. Thank you
    – ntgCleaner
    Nov 17, 2014 at 16:21
  • 7
    Cmd-F1 to toggle into Screen Mirror worked like a charm. And then Cmd-F1 back to my normal mode. Aug 25, 2015 at 17:30
  • 1
    Cmd+fn+F1 worked perfectly! Thanks a million! Dec 27, 2017 at 9:39
42

Some windows can be moved by for example dragging them horizontally from the bottom edge.

You could also try running scripts like this in AppleScript Editor:

tell application "iTunes"
    set bounds of windows to {100, 100, 800, 800}
end tell
tell application "System Events" to tell window 1 of process "UltraEdit"
    set position to {100, 100}
    set size to {800, 800}
end tell
10
  • this does not work with e.g. UltaEdit - there is an error message that the bounds can not be set. Also the syntax seems to be "set the bounds of the first window to ..." Oct 31, 2013 at 6:54
  • 1
    @WolfgangFahl set bounds of windows to is also correct syntax, but I edited the answer to add a second script that worked for me with UltraEdit.
    – Lri
    Oct 31, 2013 at 11:38
  • This worked for X-Lite when everything else failed. There was no "Zoom" in X-Lite and changing the display scale didn't work since X-LIte was on another display entirely.
    – David W.
    Jun 27, 2014 at 14:20
  • 1
    This one does the trick for Adobe Illustrator. If anyone is wondering how to target an application, it's the full name in the dock. I had to use "Adobe Illustrator CC 2014" in place of UltraEdit and it worked like a charm. Aug 13, 2015 at 23:46
  • 1
    I've made this into a command-line script with specifiable application name, and without modifying the widths and heights of windows at gist.github.com/jnothman/f794197abeb2da4ff6470ac791d014eb
    – joeln
    Apr 19, 2017 at 7:42
22

None of the above worked for me, but I managed a fix by changing:

  • System Preferences
  • Hardware
  • Displays

Then go to the 'Arrangement' 'tab' and drag the external window on top of the internal one (instead of side-by-side).

2
  • This worked for me, unlike all the other suggestions. However, it's not an ideal solution.... I'd like to be able to keep my current arrangement if possible.
    – nukeguy
    Apr 5, 2015 at 23:48
  • 1
    Nothing else worked for me - it is fascinating why this will bring back an inkscape window on MacOS while no keyboard option no nothing will help. Jun 25, 2017 at 5:05
12

If Window/Zoom option from menu won't help (as suggested in 1st answer):

Window/Zoom on OSX

(this could happen when application has it's own non-standard implementation of the Window menu like Adobe Photoshop),

you've to go to Displays Settings and select 'More Space' (Scaled) option.

See:

Displays - Scaled - More Space

If you'd like to have some permanent solution, please install BetterTouchTool, which provides extra options (gestures) for moving the windows. In example:

BetterTouchTool - Move windows

2
  • 1
    My resolution on my monitors were already maxed out , but setting from 'Best' to 'More Space' and then setting it back to default made the Filezilla window end up as full screen on my Macbook Pro screen
    – DemiSheep
    Oct 22, 2015 at 17:00
  • 1
    The scaling + option-drag-window-edge worked for me. Nov 25, 2015 at 21:53
10

I had this problem with Parallels desktop 6 in OS X Lion, whereby the VM's actual window was hidden off-screen, and only visible in Mission control, and when you swiped between spaces.

So for those with the same problem, and hopefully this is applicable elsewhere: The solution is to right click on the Application's icon in the Dock, then go to the 'Options' menu item, and under 'Assign To' choose 'This Desktop'. That should move the app window back on to the current desktop. Still preferred the old spaces pref pane for this sort of thing - much faster.

Hope that helps those stumbling upon this post, with the same problem with Parallels (as I did)

Note that on Lion, there is no Assign To option in this position.

1
  • This answer worked for me, and is the only one that doesn't seem like an enormous hack.
    – durron597
    Apr 11, 2016 at 17:54
8

I have found a way, by using "Force Quit ...", by clicking the  icon in left top corner.

Use it to force-quit the app, then start it again. It starts fresh, and the window is on-screen.

5
  • This Moom suggestion saved me.
    – AndyBean
    Nov 18, 2014 at 2:26
  • Didn't work for me with Filezilla - I even installed a updated version and it didn't reset the window (didn't uninstall old version)
    – DemiSheep
    Oct 22, 2015 at 16:47
  • I can confirm this worked for Inkscape on El Capitan Sep 19, 2016 at 15:05
  • underrated solution IMO
    – w3debugger
    Mar 11, 2019 at 6:49
  • Not anymore (Mac OS 12.4) Jul 22, 2022 at 16:42
8

If you still have an external display hooked up, or are reconnecting the external display, and at that point have the window offscreen and unmanagable, it is possible to right-click the icon for that application in the dock and force the window to snap to the other display.

This will allow you to adjust the window position without the need to modify the resolution of displays or open the system preferences tab. Still not as easy as an MS Windows solution, but definitely easier than going through all of the rest of that hassle.

3
  • 2
    no option for that on yosemite Aug 31, 2016 at 3:43
  • This worked for me with Sequel Pro app on High Sierra. It was off screen and I couldn't see it's menu bar. Selected Display 1 and it worked. Thanks!
    – Najki
    Oct 3, 2018 at 7:55
  • This use to work for me on a Mac Pro 5.1 (mid-2010) with Mojave, and is great when you have a TV connected through the wall and have no access to the other screens. However, with a (new purchase) Mac mini 8.1 (2018), I am not seeing this option anymore. Does it need to be enabled? Greatly prefer this solution in my situation. Jul 2, 2021 at 21:46
6

Hold option + click the app icon in the dock two times and it will first minimize, then restore the windows into full view on your desktop.

2
  • This doesn’t appear to work in macOS 10.14 Mojave.
    – jasonology
    Sep 9, 2019 at 23:26
  • It is still working for me in Mojave v10.14.6.
    – Justin
    Sep 16, 2019 at 17:08
5

None of the above methods worked for me on OSX 10.7.4. I was trying to access KeePassX, which was completely off the screen. (I had moved it to a second display at home, but was now at the office, with no second display.)

Changing resolution back and forth had no effect. Closing the app and opening it up again, had no effect.

However, when I closed the database, and asked to open a new one, it moved the window so I could access the dropdown to select a file. (yay!)

3

The position of the views are saved in the nib files themselves. The way I fixed this was to make a change to the View and then saved it. Shut down Interface Builder and started it again. My window and view where gathered back to the main screen. I have to say that I tried all the options before doing this. That is the Zoom, deleting the .plist from Library/Preferences, F8, Gather Windows... None of those worked. I hope this helps.

3

I tried pretty much everything above for a token app called SecurID we use for VPN access for work. This AppleScript finally solved it (courtesy of http://www.leonamarant.com/2008/04/02/how-to-get-off-screen-windows-back-on-your-mac-os-x-v105/)

-- Example list of processes to ignore: {"xGestures"} or {"xGestures", "OtherApp", ...}
property processesToIgnore : {}

-- Get the size of the Display(s), only useful if there is one display
-- otherwise it will grab the total size of both displays
tell application "Finder"
    set _b to bounds of window of desktop
    set screen_width to item 3 of _b
    set screen_height to item 4 of _b
end tell

tell application "System Events"
    set allProcesses to application processes
    set _results to ""
    repeat with i from 1 to count allProcesses
        set doIt to 1
        repeat with z from 1 to count processesToIgnore
            if process i = process (item z of processesToIgnore) then
            set doIt to 0
            end if
        end repeat

        if doIt = 1 then
            tell process i
                repeat with x from 1 to (count windows)
                    set winPos to position of window x
                    set _x to item 1 of winPos
                    set _y to item 2 of winPos

                    if (_x < 0 or _y < 0 or _x > screen_width or _y > screen_height) then
                        set position of window x to {0, 22}
                    end if
                end repeat
            end tell
        end if
    end repeat
end tell
1
  • I had the same problem with the stupid little secureID app. This post saved me, thanks!
    – Jake Hall
    Jan 21, 2016 at 15:20
2

Go to System Preferences » Displays » Detect Displays.

It will force the system to rescan, and detect the missing monitor... That typically solves the problem when I run into it.

Also, if that doesn't work, and your system still believes that the monitor is connected try two things:

  1. If you have the cable still connected (but unconnected to a monitor), disconnect it.
  2. On the arrangement tab on the displays panel, try "Gather Windows". That should gather all the windows to the active / primary monitor.
2
  • I tried using Detect Displays and that didn't work. I didn't try the "Gather Windows" option, but I will next time. Jan 15, 2010 at 15:28
  • This may or may not work. I found Wireshark (an X Windows app), would be off the display when a 2nd display was connected. This was actually an XQuartz bug (acknowledged). It's unclear if this is an Apple bug, or an XQuartz bug. See xquartz.macosforge.org/trac/ticket/797. Oct 4, 2014 at 21:47
2

The simple answer for me, if you're just completely removing external monitors (e.g., for going to a conference with your laptop) is to just close the lid and open it again. All of the other answers (^1, Zoom, moving windows) did not work for me.

1

The WindowZoom method is interesting and likely what I'd use if not for Moom. It lets you set up hotkeys for repositioning and resizing windows. I have a 9 cell grid (altoption1-9) as well as left/right halves and a few others.

The Moom default for centerring and expanding a window is controlshiftz then space - I changed this to altz. Super useful for screencasts too as you have much greater control over window positioning.

1

I wonder why it was not mentioned before but there is a very simple way to solve it.

You can grab one of the horizontal or vertical edge of the window (not the corners, though) and move the mouse parallel to the edge, not in the direction you normally would in order to resize the window.

That is, if you move the horizontal edge of the window horizontally or the vertical edge vertically then it does not resize the window but moves the whole. Now you can drag the missing part of the window back to the screen.

2
  • 1
    The problem is that entire window is off the screen. There isn't an edge to grab on.
    – F.S.
    Nov 26, 2020 at 23:41
  • This is the only simple way I've found to fix a window that gets positioned with its title bar behind the system title bar so you can't move the window.
    – qel
    Mar 3, 2021 at 14:42
0

For extreme cases, like I'm encountering with Interface Builder, you can try re-connecting your second monitor, finding that missing window and then dragging it back to the primary display.

Now, to check your work, quit the program and then re-launch it ensure that all of the desired windows are living on your primary display.

Now, disconnect the second monitor - things should be ok.

0

In my situation, the window disappeared on Mavericks after I unplugged one of my external monitors. I still had another external monitor plugged into my MacBook Pro, while the windows moved from the unplugged external were shifted to my built-in display. One window for Chrome was well outside the actual display, but with the way screens and "Spaces" work in Mavericks no part of it showed on the other displays.

The easiest way I have found is to open Exposé (either by pressing F9 if you have re-enabled that keyboard shortcut, or by swiping up with three or four fingers depending on your configuration) and drag the missing window from one monitor to another. This will cause OS X to position the window within the bounds of the new monitor automatically, and it will be visible again.

0

A third party solution is to use HyperDock. It is compatible with macOS 11.1 Big Sur but not later versions of macOS.

This utility modifies the Dock to show a preview of each application’s windows floating above the application icon.

These are draggable, so you just pick the window you wish to view and drag it to the monitor you need to see it on.

0

So interesting that no one has mentioned the simplest solution of all of them. Just close the laptop lid and quickly open it, it will force the window manager to reset.

2
  • The question was answered 14 years ago... Dec 21, 2023 at 20:49
  • Sure. But when I encountered this problem, almost none of the suggestions here worked for me. The one I posted resolved the issue. Jan 9 at 8:23

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .