Параметры, описывающие X- и Y-смещения фрейма, всегда измеряются в пикселях. Для обычного, не дочернего фрейма они задают внешнее положение фрейма (см. Геометрия фрейма) относительно начала его дисплея. Для дочернего фрейма (см. Дочерние фреймы) они задают внешнее положение фрейма относительно собственного положения родительского фрейма. (Обратите внимание, что ни один из этих параметров не имеет смысла на TTY-фреймах.)
leftПоложение в пикселях левого внешнего края фрейма относительно левого края дисплея или родительского фрейма. Может задаваться одним из следующих способов.
Положительное целое число всегда относит левый край фрейма к левому краю его дисплея или родительского фрейма. Отрицательное целое число относит правый край фрейма к правому краю дисплея или родительского фрейма.
(+ поз)Задаёт положение левого края фрейма относительно левого края его дисплея или родительского фрейма. Целое число поз может быть положительным или отрицательным; отрицательное значение задаёт положение за пределами экрана или родительского фрейма либо на мониторе, отличном от основного (для многомониторных дисплеев).
(- поз)Задаёт положение правого края фрейма относительно правого края дисплея или родительского фрейма. Целое число поз может быть положительным или отрицательным; отрицательное значение задаёт положение за пределами экрана или родительского фрейма либо на мониторе, отличном от основного (для многомониторных дисплеев).
Значение с плавающей точкой в диапазоне от 0.0 до 1.0 задаёт смещение левого края через коэффициент положения слева фрейма — отношение левого края его внешнего фрейма к ширине рабочей области фрейма (см. Несколько терминалов) или собственного фрейма его родителя (см. Дочерние фреймы) минус ширина внешнего фрейма. Таким образом, коэффициент положения слева, равный 0.0, прижимает фрейм к левому краю, коэффициент 0.5 центрирует его, а коэффициент 1.0 прижимает его к правому краю дисплея или родительского фрейма. Аналогично, коэффициент положения сверху фрейма — это отношение положения верхнего края фрейма к высоте его рабочей области или родительского фрейма минус высота фрейма.
Emacs будет пытаться сохранять коэффициенты положения дочернего фрейма неизменными, если
этот фрейм имеет ненулевой параметр keep-ratio
(см. Параметры взаимодействия фреймов), а его родительский фрейм изменяет размер.
Поскольку внешний размер фрейма (см. Геометрия фрейма) обычно недоступен до того, как фрейм станет видимым, как правило, не рекомендуется использовать значения с плавающей точкой при создании декорированных фреймов. Значения с плавающей точкой больше подходят для обеспечения того, чтобы (недекорированный) дочерний фрейм был хорошо расположен в пределах области своего родительского фрейма.
Некоторые оконные менеджеры игнорируют заданные программой положения. Если вы хотите
быть уверены, что указанное вами положение не будет проигнорировано, задайте
ненулевое значение для параметра user-position, как в следующем
примере:
(modify-frame-parameters nil '((user-position . t) (left . (+ -4))))
В общем случае не рекомендуется располагать фрейм относительно правого или нижнего края его дисплея. Позиционирование начального или нового фрейма либо неточно (поскольку размер внешнего фрейма ещё не полностью известен до того, как фрейм станет видимым), либо вызывает дополнительное мерцание (если фрейм необходимо переместить после появления).
Также обратите внимание, что положения, заданные относительно правого/нижнего края
дисплея, рабочей области или родительского фрейма, а также смещения с плавающей точкой
внутренне хранятся как целочисленные смещения относительно левого/верхнего края
дисплея, рабочей области или края родительского фрейма. Они также возвращаются
в таком виде функциями типа frame-parameters и восстанавливаются в таком виде
процедурами сохранения состояния рабочего стола.
topПоложение на экране верхнего (или нижнего) края в пикселях относительно
верхнего (или нижнего) края дисплея или родительского фрейма. Действует
аналогично left, но по вертикали, а не по горизонтали.
icon-leftПоложение на экране левого края иконки фрейма в пикселях,
отсчитываемое от левого края экрана. Вступает в силу, когда
фрейм свёрнут, если оконный менеджер поддерживает эту возможность.
Если вы задаёте значение для этого параметра, вы также должны задать
значение для icon-top и наоборот.
icon-topПоложение на экране верхнего края иконки фрейма в пикселях, отсчитываемое от верхнего края экрана. Вступает в силу, когда фрейм свёрнут, если оконный менеджер поддерживает эту возможность.
user-positionКогда вы создаёте фрейм и задаёте его положение на экране с помощью
параметров left и top, используйте этот параметр, чтобы указать,
было ли заданное положение указано пользователем (явно запрошено
каким-либо образом человеком) или только программой (выбрано программой).
Ненулевое значение означает, что положение было указано пользователем.
Оконные менеджеры обычно учитывают положения, указанные пользователем, а некоторые учитывают
и положения, указанные программой. Но многие игнорируют положения, указанные программой,
размещая окно стандартным образом или позволяя пользователю
разместить его мышью. Некоторые оконные менеджеры, включая twm,
позволяют пользователю указать, следует ли выполнять положения, заданные программой, или
игнорировать их.
При вызове make-frame вам следует задать ненулевое
значение для этого параметра, если значения параметров left и top
представляют явно выраженное предпочтение пользователя; в противном случае используйте
nil.
z-groupЭтот параметр задаёт относительное положение окна фрейма в оконной системе в порядке перекрытия (Z-порядке) дисплея фрейма.
Если это above, оконная система будет отображать окно,
соответствующее фрейму, выше всех остальных окон оконной системы,
не имеющих установленного свойства above. Если это
nil, окно фрейма отображается ниже всех окон, имеющих
свойство above, и выше всех окон, имеющих
свойство below. Если это below, окно фрейма
отображается ниже всех окон, не имеющих свойства below.
Чтобы разместить фрейм выше или ниже конкретного другого фрейма, используйте
функцию frame-restack (см. Поднятие, опускание и перестановка фреймов).