Move all windows to main screen in OS X

If you use an external monitor as a primary display for your laptop while using the laptop’s screen as a secondary display, you’ve probably run into the annoyance of having a bunch of windows stay on the secondary display when you plug in the primary.

AppleScript can help! I modified the script found here as follows. Save this as an application, run it, and it will move all application windows onto your primary display.

You do have to run it once in each virtual desktop if you use Spaces. If I actually knew AppleScript, I would fix this “bug.”

-- 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  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

🌟 Was this page helpful? Please let me know with this quick, 3 question survey.