На этой странице объясняется _NET_WM_STRUT_PARTIAL
:
_NET_WM_STRUT_PARTIAL, left, right, top, bottom, left_start_y, left_end_y,
right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x,
bottom_end_x,CARDINAL[12]/32
[...] Например, для клиента в виде панели, появляющегося внизу экрана, высотой 50 пикселей и занимающего пространство от 200 до 600 пикселей слева от края экрана, будет установлена нижняя стойка 50, и задайте для bottom_start_x значение 200, а для bottom_end_x значение 600. Другим примером является панель на экране с использованием расширения Xinerama. Предположим, что в настройке используются два монитора, один из которых работает с разрешением 1280 x 1024, а другой — справа. в разрешении 1024x768, с выровненными верхними краями двух физических дисплеев. Если панель хочет заполнить весь нижний край меньшего дисплея панелью высотой 50 пикселей, она должна установить нижний распор равным 306, с bottom_start_x равным 1280, а нижний_конец_x равен 2303. Обратите внимание, что распорка задается относительно края экрана. , а не край монитора ксинерамы.
(мое смелое лицо).
Теперь, как это работает? Думайте об этом как о функции, которая запускается значением, отличным от 0, в первых 4 целых числах. Поэтому, если вы хотите зарезервировать место внизу, вы устанавливаете left, right, top
на 0, а bottom
на 50.
Затем пары *_start_x
и *_end_x
определяют размер зарезервированной области вдоль края экрана.
В вашем примере вы хотите зарезервировать место в правой части экрана. Если ваша основная область составляет 2000 пикселей, а меньший экран имеет ширину 1200 пикселей, а область должна быть 150 пикселей, то вам нужно bottom = 2000 - 1200 + 150 = 950
(виртуальный экран в этой настройке везде имеет ширину 2000 пикселей, поэтому вам нужно сместить значение с разницей ширины двух реальных мониторов).
right_start_y
== высота верхнего монитора.
right_end_y
== right_start_y + высота области, которую вы хотите зарезервировать.
person
Aaron Digulla
schedule
27.01.2014