В системе X Window расширение X Nonrectangular Window Shape Extension позволяет придавать окнам произвольные, непрямоугольные формы.
Два известных апплета, использующих расширение shape, — это oclock , представляющий собой простые круглые аналоговые часы, и xeyes , представляющий собой два гугл-глаза , которые следят за курсором на экране, как будто наблюдают за ним. Большинство систем X имеют один или другой (или оба) в своих стандартных установках. Кроме того, некоторые оконные менеджеры используют расширение shape для рисования непрямоугольных значков.
Приложения могут создавать только прямоугольные окна, но затем могут изменять их форму, чтобы они были произвольной частью исходного прямоугольника. Оставшаяся область прямоугольника не только прозрачна (показывает то, что находится под окном); скорее, она вообще не является частью окна. Например, если окно имеет форму с отверстием посередине, не только отверстие показывает то, что находится под окном, но и щелчок в отверстии считается щелчком в том, что находится под окном.
Приложения создают окна как обычно (указывая ширину и высоту), но затем могут изменить форму окна, чтобы оно стало подмножеством исходной области, отправив серверу отображения X либо список прямоугольников, либо пиксельную карту с глубиной цвета один (черно-белую пиксельную карту). Точнее, клиент может запросить, чтобы прямоугольники или пиксельная карта были установлены в качестве новой формы, а также чтобы они были объединены различными способами (например, пересечены или добавлены) со старой формой. Третий способ изменения формы окна — использовать текущую форму окна или ее часть.
Расширение позволяет определить форму двух отдельных областей: области отсечения и ограничивающей области. Эти две области определяются даже для окон, не использующих расширение формы: область отсечения — это область, которая может быть использована для рисования, ограничивающая область — это общая область, покрываемая окном (то есть область отсечения плюс граница). Расширение формы позволяет определить две независимые формы для этих двух областей.
И обрезка, и ограничение связаны в расширении формы с двумя областями: прямоугольной областью по умолчанию и возможно непрямоугольной клиентской областью, определяемой и изменяемой клиентом, как указано выше. Эффективная область, которая является фактической формой окна, является пересечением этих двух областей. Это пересечение выполняется каждый раз, когда изменяется любая из областей: например, если клиентские области содержат части, которые находятся за пределами области по умолчанию, но затем область по умолчанию увеличивается, эффективная область будет включать эти части.