Как получить и / или перезаписать минимальный размер окон в Mac OSX

Я хочу изменить размер любого окна на моем компьютере, что я выполняю с помощью 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 имеют размер не менее 213 пикселей * 129 пикселей.

Поскольку мне иногда нужно изменить размер окон до меньшей ширины и высоты, есть ли способ изменить этот минимальный размер, то есть использовать мои значения, даже если они «слишком малы»?

Если нет, мне нужно знать минимальный размер, чтобы я знал, что окно будет больше, чем ожидалось. Как бы я этого добился?


Конкретная проблема заключается в следующем: я пишу диспетчер листов окон, поэтому мне нужно отвечать за размер окон. Минимальный размер создает проблемы:

  1. Мои плитки могут быть слишком маленькими для окон определенного приложения, поэтому окна могут перекрываться в других плитках.
  2. Окно может быть шире / выше, чем ожидалось, и поэтому выходить за границы моего экрана. (Например, окно находится рядом с правым нижним углом моего экрана - я установил ширину и высоту соответственно, чтобы поместиться в углу, но, поскольку оно имеет минимальный размер, оно не поместится.)

Благодарю за любые рекомендации. :)

С наилучшими пожеланиями, Флориан


person Florian Pilz    schedule 24.04.2011    source источник
comment
Вы можете отредактировать файлы пера и установить другой минимальный размер окон!   -  person    schedule 24.04.2011
comment
А если серьезно, приложения устанавливают минимальные размеры для своих окон, чтобы предотвратить проблемы с автоматическим изменением размеров, из-за которых некоторые представления могут исчезать и не отображаться при увеличении размера окна. Насколько я понял, похоже, что вы не можете запросить или установить минимальный размер из AppleScript.   -  person    schedule 24.04.2011
comment
Похоже, вы правы, потому что менеджер листов Divvy также не может установить меньший размер. Жаль, что я не могу запросить минимальный размер, поэтому мне нужен обходной путь. Единственный обходной путь, который приходит мне в голову, - это установить желаемый размер, получить реальный размер и переместить окно, если реальный размер отличается от размера, который я установил / потребовал.   -  person Florian Pilz    schedule 24.04.2011
comment
Вы можете обойти ограничение минимального размера с помощью приложений Carbon, например iTunes. Но обойти это вообще невозможно, используя только AS. А если серьезно, такие приложения, как Divvy, не используют оконные менеджеры.   -  person Lri    schedule 27.04.2011
comment
@Bavarious Если вы превратите свой комментарий в ответ, я с радостью его приму. :) @Lri Это лучшее описание, которое у меня есть. Я знаю, что xMonad - настоящий диспетчер оконных листов, но как насчет всех остальных вариантов? (Divvy, OptimalLayout, Arrange, ...)   -  person Florian Pilz    schedule 03.05.2011


Ответы (1)


Как отметили комментаторы: Невозможно изменить размер окна ниже его минимального размера, который был установлен во время разработки (например, в Interface Builder). Однако минимальные размеры существуют по какой-то причине: чтобы предотвратить автоматическое -размер проблемы, например кнопки перекрываются или исчезают из-за слишком маленького размера просмотра.

Спасибо Bavarious за этот ответ.

PS: Лри добавил, что можно обойти минимальные размеры, используя API приложения, например с помощью Carbon API для изменения размера iTunes или с помощью настраиваемых API-интерфейсов AppleScript. Спасибо, Лри!

person Florian Pilz    schedule 12.03.2012