23

每当我在远离办公桌的地方使用 MacBook,然后将其插入外接显示器(作为主显示器)时,我都会进入将窗口放置在笔记本显示器和外接显示器中的状态。

要将所有窗口移动到单个屏幕,我当前的解决方案是在显示首选项中“打开镜像”,然后再次将其关闭。不过,这相当乏味。有人知道更好的方法吗?


恐怕@erlando发布的脚本对我来说绝对没有任何作用,运行Mac OS X 10.5.4。(即,在两个屏幕上都有窗口,运行脚本不会移动其中一个,并且它不会返回任何错误。)我想我只需要坚持使用上面提到的“镜像/取消镜像”方法。


@ Denton:恐怕这些链接提供了脚本,用于将任何屏幕上的孤立窗口重新显示到显示器上。我“只是”想将所有窗口从辅助显示器移动到主显示器。

4

6 回答 6

25

Cmd+F1似乎是 Snow Leopard 中的 Mirror Displays 快捷方式。不过,不知道Lion等。

只需轻按两次,看看会发生什么(-:

对于喜欢将功能键设置为以老式方式(而不是亮度/声音控制等)的人来说,它将是Cmd+Fn+F1

于 2012-07-08T02:50:07.580 回答
8

在 Lion 上,您可以使用fn+ Cmd+切换镜像显示F1(前提是您默认使用媒体控制键)。

这也适用于 Snow Leopard 以及介于两者之间的所有内容,也可能更远。

于 2012-05-02T10:29:44.390 回答
4

您可以单击“显示”首选项窗格中的“收集窗口”按钮。

于 2008-09-16T18:29:58.340 回答
3

这是执行此操作的命令行脚本:http: //zach.in.tu-clausthal.de/software/

它位于“将屏幕外窗口移动到主屏幕”下的页面下方。


-- Source: http://www.jonathanlaliberte.com/2007/10/19/move-all-windows-to-your-main-screen/
-- and: http://www.macosxhints.com/article.php?story=2007102012424539
--
-- Improvements:
-- +  code is more efficient and more elegant now
-- + windows are moved also, if they are "almost" completely off-screen 
--      (in the orig. version, they would be moved only if they were completely off-screen)
-- + windows are moved (if they are moved) to their closest position on-screen
--     (in the orig. version, they would be moved to a "home position" (0,22) )
-- Gabriel Zachmann, Jan 2008

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

-- 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
    repeat with i from 1 to count allProcesses
        --display dialog (name of (process i)) as string
        if not (processesToIgnore contains ((name of (process i)) as string)) then
            try
                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
                        set winSize to size of window x
                        set _w to item 1 of winSize
                        set _h to item 2 of winSize
                        --display dialog (name as string) & " - width: " & (_w as string) & " height: " & (_h as string)
                        
                        if (_x + _w < 40 or _y + _h < 50 or _x > screen_width - 40 or _y > screen_height - 40) then
                            
                            if (_x + _w < 40) then set _x to 0
                            if (_y + _h < 50) then set _y to 22
                            if (_x > screen_width - 40) then
                                set _x to screen_width - _w
                                if (_x < 0) then set _x to 0
                            end if
                            if (_y > screen_height - 40) then
                                set _y to screen_height - _h
                                if (_y < 22) then set _y to 22
                            end if
                            set position of window x to {_x, _y}
                            
                        end if
                    end repeat
                    
                end tell
            end try
        end if
    end repeat
end tell
于 2008-09-02T09:33:30.700 回答
3

正如您所说,最好的答案似乎是再次打开和关闭“镜像显示”。之后,主屏幕上的所有窗口将被收集,副屏幕将是空的。

截屏

这有点麻烦,但在 Lion 中没有其他任何东西对我有用。

于 2012-04-24T18:05:37.273 回答
2

在macosxtips.co.ukmacosxhints.com上有一篇关于使用 AppleScript 执行此操作的文章。

于 2008-09-06T03:37:55.587 回答