ВНИМАНИЕ: ЭКСПЕРИМЕНТАЛЬНЫЙ МОДУЛЬ. НЕ ИСПОЛЬЗОВАТЬ В ПРОИЗВОДСТВЕ. Этот модуль предназначен только для тестирования. Его API может быть изменен или полностью удаленв любой момент и без предварительного уведомления. (Если у вас возникнут какие-либо проблемы, не стесняйтесь сообщать о них на https://github.com/Hammerspoon/hammerspoon/issues или в #hammerspoon на irc.libera.chat)
Размещение окон в виде плитки
Функция tileWindows в этом модуле предназначена в основном для использования hs.window.layout; однако вы можете вызвать её вручную (например, для вашего пользовательского движка макета).
Обзор API
Функции - API-вызовы, предоставляемые непосредственно расширением
Размещение окон в виде плитки (или в прямоугольнике)
Параметры
windows - список объектов hs.window, указывающих на окна, которые нужно разместить в виде плитки или в прямоугольнике
rect - объект hs.geometry прямоугольник (или аргумент конструктора), указывающий желаемую область на экране, в пределах которой будут расположены окна в виде плитки
desiredAspect - (необязательно) объект hs.geometry размер (или аргумент конструктора) или число, указывающее желаемое оптимальное соотношение сторон (ширина/высота) окон в виде плитки; движок разбиения на плитки определит, как разделить прямоугольник между окнами, пытаясь максимально сохранить соотношение сторон каждого окна; если опущено, по умолчанию равно 1 (т.е. попытаться сделать окна как можно более квадратными)
processInOrder - (необязательно) если true, окна будут размещаться слева направо и сверху вниз, следуя порядку списка в windows; если false или опущено, движок разбиения на плитки попытается сохранить пространственное распределение окон, т.е. (грубо говоря) выберет ближайшее окно для каждой целевой «плитки»; имейте в виду, что в некоторых случаях это невозможно, и окна могут быть «перемешаны» неожиданным образом
preserveRelativeArea - (необязательно) если true, сохранить относительные площади между окнами; то есть, если окно A в настоящее время в два раза больше окна B, то это же соотношение будет сохранено после обработки и размещения обоих окон в прямоугольнике; если false или опущено, все окна будут иметь одинаковую площадь (= площадь прямоугольника / количество окон) после обработки
animationDuration - (необязательно) количество секунд для анимации операций перемещения/изменения размера окон; если опущено, по умолчанию принимает значение hs.window.animationDuration
Возвращаемое значение
None
Примечания
Чтобы убедиться, что все окна расположены в один ряд (рядом друг с другом), используйте очень маленькое соотношение сторон (для «высоких и узких» окон), например, 0,01; аналогично, для размещения всех окон в столбец используйте очень большое соотношение сторон (для «коротких и широких»), например, 100
Скрытые и минимизированные окна также будут обработаны: прямоугольник будет иметь «пробелы», где находились бы невидимые окна, которые будут заполнены при разблокировании окон