这是一个调用 python 脚本在显示集之间切换的脚本。它仅设置为更改第二个显示器的相对位置,但可以轻松扩展为与三个或更多显示器一起使用。
请注意,您不必对新位置非常精确。Quartz 会自动调整以提供最接近的配置,其中显示空间无缝接触。
set displaySet to first item of ¬
(choose from list {"On left", "On right", "On top", "On bottom"} ¬
with prompt "Choose position for second display.")
(* assuming 1280 x 800 pixel displays *)
if displaySet is "On top" then
changeSecondDisplayOrigin(0, -800)
else if displaySet is "On bottom" then
changeSecondDisplayOrigin(0, 800)
else if displaySet is "On left" then
changeSecondDisplayOrigin(-1280, 0)
else
changeSecondDisplayOrigin(1280, 0)
end if
on changeSecondDisplayOrigin(x, y)
do shell script "
/usr/bin/python <<END
import objc
import Quartz
from Quartz.CoreGraphics import CGGetActiveDisplayList
from Quartz.CoreGraphics import CGBeginDisplayConfiguration
from Quartz.CoreGraphics import CGConfigureDisplayOrigin
from Quartz.CoreGraphics import CGCompleteDisplayConfiguration
(activeErr, activeDisplays, displayCount) = Quartz.CGGetActiveDisplayList(2, None, None);
secondDisplay = activeDisplays[1];
(configErr, displayConfigRef) = CGBeginDisplayConfiguration(None);
moveErr = CGConfigureDisplayOrigin(displayConfigRef, secondDisplay, " & x & ", " & y & ");
completeErr = CGCompleteDisplayConfiguration(displayConfigRef, 2);
END"
end changeSecondDisplayOrigin