Answers:
看看无绳犬的住宿吧。我相信它确实可以满足您的需求。
Slate是一款功能非常强大的免费 Mac应用程序,可以完全满足您的需求。当您插入辅助监视器时,它将自动检测到新监视器,并且所有窗口将按照您喜欢的方式进行移动和调整大小。您可以为所有应用程序定义自定义位置和大小,包括全屏,半屏和基于网格。
关于Slate的最酷的事情之一是,您可以基于已连接的监视器数量来定义不同的布局。例如,如果您自己使用笔记本电脑,则可能希望所有应用程序都充满整个屏幕。但是,当您拥有较大的辅助显示器时,可能需要在浏览器,邮件和音乐之间拆分屏幕。石板很容易做到这一点。
您还可以为特定的布局和操作定义键盘快捷键,例如按一定百分比微调和调整窗口大小。
以下是我的配置文件。我将所有应用程序全屏显示在所有显示器上,但是您可以对其进行更改以使其尺寸减小一半或其他大小:
# Monitor Aliases
alias mon-laptop 0 # variable for my laptop monitor
alias mon-hp 1 # my external HP monitor
# Window Position Regions
alias hp-full move screenOriginX;screenOriginY screenSizeX;screenSizeY ${mon-hp}
alias hp-left move screenOriginX;screenOriginY screenSizeX/2;screenSizeY ${mon-hp}
alias hp-right move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY ${mon-hp}
alias laptop-full move screenOriginX;screenOriginY screenSizeX;screenSizeY ${mon-laptop}
alias laptop-left move screenOriginX;screenOriginY screenSizeX/2;screenSizeY ${mon-laptop}
alias laptop-right move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY ${mon-laptop}
alias laptop-righttop move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY/2 ${mon-laptop}
alias laptop-rightbottom move screenOriginX+screenSizeX/2;screenOriginY+screenSizeY/2 screenSizeX/2;screenSizeY/2 ${mon-laptop}
# Window layouts for when I have 2 monitors
layout 2monitor 'Google Chrome':REPEAT ${hp-full}
layout 2monitor 'iCal':REPEAT ${hp-full}
layout 2monitor 'Coda':REPEAT ${hp-full}
layout 2monitor 'Mail':REPEAT ${laptop-full}
layout 2monitor 'Rdio':REPEAT ${laptop-full}
layout 2monitor 'Spotify':REPEAT ${laptop-full}
layout 2monitor 'Evernote':REPEAT ${laptop-full}
# Single monitor window layouts
layout 1monitor 'Google Chrome':REPEAT ${laptop-full}
layout 1monitor 'iCal':REPEAT ${laptop-full}
layout 1monitor 'Coda':REPEAT ${laptop-full}
layout 1monitor 'Mail':REPEAT ${laptop-full}
layout 1monitor 'Rdio':REPEAT ${laptop-full}
layout 1monitor 'Spotify':REPEAT ${laptop-full}
layout 1monitor 'Evernote':REPEAT ${laptop-full}
# Keyboard shortcuts for each layout
bind l:shift;ctrl layout 2monitor
bind g:shift;ctrl grid padding:5 0:2,1 1:2,2
# Auto-detect when a monitor is plugged in or out
default 2monitor count:2
default 1monitor count:1
这是Slate的GitHub页面上的功能列表:
我已经用一个小的AppleScript和一个小的免费软件实用程序Quicksilver解决了这个问题。
将此小型AppleScript保存在计算机上不会改变的位置:
try
tell application "Adium"
activate
tell window "contacts"
set the bounds to {1281, 200, 1460, 850}
end tell
tell chat windows
set the bounds to {1281, 800, 1800, 1200}
end tell
end tell
end try
try
tell application "iTunes"
activate
set the bounds of the first window to {1750, 520, 2700, 1150}
end tell
end try
try
tell application "Terminal"
activate
set the bounds of the first window to {2450, 320, 3180, 950}
end tell
end try
try
tell application "Firefox"
activate
set the bounds of the first window to {1460, 20, 2800, 950}
end tell
end try
您将需要自定义在监视器上想要的应用程序,并且窗口以您喜欢它们的方式限制。我是一名程序员,上面的配置是我运行第二台监视器的方式。
安装Quicksilver。
我选择使其在Dock中不可见,而只是作为一个小的任务栏守护程序运行
在Quicksilver中设置键盘命令,然后将步骤1中的AppleScript拖放到窗口中作为要执行的操作。我将其绑定到CommandShiftA。很棒!
拔下显示器电源之前,请关闭所有不完全位于主显示器上的部件。应用程序通常在关闭时保存其状态(包括窗口放置),并在打开时读取它们,因此,如果这两个时间都存在第二个监视器,则应该没事。
您可以利用允许一次打开多个实例,但仅在关闭状态下保存状态的应用程序。关闭多监视器实例(这将导致状态被保存)。拔下第二台显示器的电源。如果正在运行第二个实例,则应将其重新放置在主监视器上,或者可以启动另一个实例。在再次插入第二个监视器并启动另一个实例(然后在启动时将读取多监视器配置)之前,请勿关闭该实例。然后,您可以退出单监视器实例(保存该状态),然后退出多监视器实例(覆盖单监视器状态)。
一个更复杂的选项可能包括在打开应用程序之前弄清楚状态的保存位置,备份状态以及编写批处理文件/脚本以将其还原,这将允许您创建一个链接以在启动应用程序时自动执行此操作。
最后,您的平台可能会有这样的实用程序,或者编写一个实用程序可能不太复杂。对于Windows,有一个名为ShiftWindow的程序可以在应用程序启动或某个热键上重新定位窗口。恐怕我不太了解MacOS,无法说出是否存在类似的实用程序。这可能是理想的解决方案,仅次于让OS直接支持此类事物。
我只是关注了http://cordlessdog.com/stay/,对我来说效果很好,尽管有点滞后
在Mac上保持安装状态后,可以启动它并按需要存储Windows。因此,无论何时断开显示器并重新连接,您都将恢复所有窗口。
您可能必须将stay添加为启动应用程序,因为每次重启Mac时都必须启动它。
我没有任何外部应用程序就解决了这个问题。
所有您需要做的就是确保您的笔记本电脑是“台式机1”,而外接显示器是“台式机2”
您可以通过在系统偏好设置>显示>排列中将白色菜单栏移至笔记本电脑屏幕来完成此操作
至少在Windows上,如果在切换监视器之前将它们最大化,则许多应用程序将恢复自身。在会议期间,不要理会它们,然后在重新连接后恢复它们。
它仍然是一个不完整的修复程序(而且很麻烦),但是如果我希望有机会复活精心放置的窗户,这是我唯一知道的事情。ShiftWindow听起来很有趣...
如果您从两台显示器降到一台,Alt + Spacebar + M,则如果您“丢开”窗户,箭头键将是救生员(再次使用Windows,对不起)。
http://www.irradiatedsoftware.com/twoup/index.html
我是通过Lifehacker找到的,对我来说非常有用。我使用的是专业版SizeUp,而不是免费的TwoUp,它非常完美。
我是Windows用户,一直在寻找如何关闭Windows 7的新功能,以将所有窗口从未插入的外接显示器上移开。我发现收据(用于ATI视频卡)将注册表中的所有DMMEnableDDCPolling值设置为0。如果监视器已关闭,它将禁用自动检查。现在,如果将显示器拔下并再次插入,则所有窗口都将保持在同一位置。
这是对我有帮助的答案:https : //superuser.com/questions/120983/how-to-disable-monitor-auto-detection-in-windows-7(Alex的回答)