Я использую эти AppleScripts:
try
tell application "Finder"
set b to bounds of window of desktop
end tell
try
tell application (path to frontmost application as text)
set bounds of window 1 to {0, 22, (item 3 of b) / 2, item 4 of b}
end tell
on error
tell application "System Events" to tell window 1 of (process 1 where frontmost is true)
set position to {0, 22}
set size to {(item 3 of b) / 2, (item 4 of b) - 22}
end tell
end try
end try
try
tell application "Finder"
set b to bounds of window of desktop
end tell
try
tell application (path to frontmost application as text)
set bounds of window 1 to {((item 3 of b) / 2), 22, item 3 of b, item 4 of b}
end tell
on error
tell application "System Events" to tell window 1 of (process 1 where frontmost is true)
set position to {(item 3 of b) / 2, 22}
set size to {(item 3 of b) / 2, (item 4 of b) - 22}
end tell
end try
end try
Сначала сценарии пытаются сообщить приложению об изменении свойства границ, а затем сообщают системным событиям об изменении свойств позиции и размера. Использование системных событий (или API специальных возможностей) работает с большим количеством приложений, но также может показаться немного затруднительным, поскольку позиция и размер не изменяются одновременно. Другие приложения, такие как Slate, всегда используют API специальных возможностей.