【发布时间】:2011-04-24 11:35:04
【问题描述】:
我想使用GUI Scripting 调整我机器上的任何窗口的大小,这通过AppleScript 完成。 该脚本类似于以下内容:
tell application "System Events"
set appProcess to the first process whose name is "Finder"
set appWindow to the front window of appProcess
set position of appWindow to {100, 100}
set size of appWindow to {10, 10}
end tell
即使我将宽度和高度设置为 10 像素,Finder 也会调整到至少 344 像素的宽度和 236 像素的高度。我用其他应用程序对此进行了测试,并且都有一个最小宽度,这取决于应用程序。例如,TextMate 窗口的大小至少为 213px * 129px。
由于我有时需要将窗口的大小调整为较小的宽度和高度,有没有办法覆盖这个最小尺寸,即即使它们“太小”也会使用我的值?
如果没有,我需要知道最小尺寸,这样我才能知道窗口会比预期的大。我将如何做到这一点?
具体问题如下:我正在编写一个窗口平铺管理器,因此我需要负责窗口的大小。最小尺寸会产生问题:
- 我的磁贴可能对于某个应用程序的窗口来说太小,因此这些窗口可能会在其他磁贴中重叠。
- 窗口可能比预期的更宽/更高,因此跨越了我的屏幕边界。 (例如,窗口靠近屏幕的右下角 - 我相应地设置了宽度和高度以适合角落,但由于它有最小尺寸,因此不适合。)
感谢您提出的任何建议。 :)
最好的祝愿
弗洛里安
【问题讨论】:
-
您可以编辑 nib 文件并为窗口设置不同的最小尺寸!
-
说真的,应用程序会为其窗口设置最小尺寸,以防止自动调整大小问题,这会导致某些视图在窗口大小放大时消失并且不显示。根据我收集的信息,您似乎无法从 AppleScript 查询或设置最小大小。
-
看来你是对的,因为平铺管理器 Divvy 也无法设置更小的尺寸。太糟糕了,我无法查询最小尺寸,所以我需要一个解决方法。我想到的唯一解决方法是设置我希望的大小,获取实际大小并在实际大小与我设置/要求的大小不同时移动窗口。
-
您可以绕过 Carbon 应用程序的最小大小限制,例如 iTunes。但是一般来说,仅使用 AS 是无法绕过它的。说真的,像 Divvy 这样的应用程序并没有平铺窗口管理器。
-
@Bavarious 如果你把你的评论变成答案,我很乐意接受。 :) @Lri 这是我最好的描述。我知道,xMonad 是一个真正的窗口平铺管理器,但是所有其他选项呢? (Divvy, OptimalLayout, Arrange, ...)
标签: objective-c macos window applescript minimum-size