显示的大小和AppleScript,懒惰的方式

我有这个想法的AppleScript巧妙地调整和安排我的所有web浏览器窗口打开我希望每个窗口大小的1024像素宽,和全高度显示,与第一个窗口定位在屏幕左边缘的附近,并且每个后续窗口叠加20像素的右边这是一个我的桌面截图显示我的意思。

棘手的部分在写一个脚本是决定屏幕的高度(Or the width, for that matter, if I wanted to do something to make sure all the windows fit on screen, no matter how many there are.) I wasn’t aware of any way to obtain the size of the screen using AppleScript我可以硬编码一个大小为脚本,但我想写脚本的主要原因首先是我20英寸电影院之间切换显示和笔记本内置的显示我的15寸,(切换)可以让浏览器窗口奇怪的大小我想要相同的脚本处理显示。

我的朋友克雷格你-在Iconfactory杰出的程序员有一个解决方案:

tell application "Finder"
    get bounds of window of desktop
end tell

这返回一个列表的四个整数:左上角的x和y坐标和桌面右下方的角落如和我的电影展示,它返回:

{ 0,0,1680,1050 }

所以要显示的宽度和高度:

tell application "Finder"
    set _b to bounds of window of desktop
    set _width to item 3 of _b
    set _height to item 4 of _b
end tell

(The leading underscores are something I’ve started using in my AppleScript variable names to make them easily distinguishable from terms in scripting dictionaries; think of them sort of like Perl’s了相应的符号)。

这种方法的问题是,如果你使用多个显示器,它仍然只是返回四坐标“桌面”概念包括所有活动显示一个大的矩形例如,如果我让我的电影显示(1680×1050)和我的强力笔记本电脑显示器(1440×960),并安排他们(在系统控制台的显示面板)是这样的:

屏幕截图的安排在系统偏好的显示面板,右边的小屏幕。

然后返回的矩形脚本:

{ 0,0,3120,1050 }

这样的安排:

屏幕截图的安排在系统偏好的显示面板,左边的小屏幕。

你会得到:

{ -1440,0,1680,-1440 }

第一个数字是负数,因为原点(0,0)坐标系统的主界面的左上角的菜单栏这意味着与二级左边的屏幕,桌面的左上角(-1440 0)。

如果你安排你的显示是这样的:

屏幕截图的安排在系统偏好的显示面板,和两个对角排列显示。

你看似巨大的:

{ 0,0,3120,2010 }

所以,简而言之,问的发现者的桌面窗口如果只有一个显示伟大的工作如果你需要每个维度的信息显示在多个显示设置,你需要找到另一种方法。

2012年4月22日更新:肖恩·斯坦利是免费的ASObjC跑步使它更容易从AppleScript获得显示尺寸,,更好的是,提供了全面支持多种显示设置。