X -оконный менеджер — это оконный менеджер , работающий поверх X Window System , оконной системы, используемой в основном в Unix-подобных системах.
В отличие от платформ MacOS Classic , macOS и Microsoft Windows (за исключением замен оболочки Microsoft Windows explorer.exe ), которые исторически предоставляли контролируемый поставщиком фиксированный набор способов управления тем, как окна и панели отображаются на экране , и как пользователь может взаимодействовать с ними, управление окнами для X Window System было намеренно отделено от программного обеспечения, обеспечивающего графический дисплей. Пользователь может выбирать между различными сторонними оконными менеджерами, которые отличаются друг от друга несколькими способами, включая:
Когда запущен оконный менеджер, некоторые виды взаимодействия между X-сервером и его клиентами перенаправляются через оконный менеджер. В частности, всякий раз, когда делается попытка показать новое окно, этот запрос перенаправляется в оконный менеджер, который определяет начальное положение окна. Кроме того, большинство современных оконных менеджеров переназначают , что обычно приводит к размещению баннера в верхней части окна и рисованию декоративной рамки вокруг окна. Эти два элемента контролируются оконным менеджером, а не программой. Поэтому, когда пользователь щелкает или перетаскивает эти элементы, именно оконный менеджер выполняет соответствующие действия (например, перемещение или изменение размера окна).
Менеджеры окон также отвечают за значки . Действительно, значки не существуют на уровне протокола ядра X Window System . Когда пользователь запрашивает иконизацию окна, менеджер окон отменяет его отображение (делает его невидимым) и предпринимает соответствующие действия, чтобы показать значок на его месте. Большинство современных менеджеров окон больше не отображают значки для представления иконизированных окон. Часто вспомогательная программа панели инструментов позволяет получить доступ к иконизированным окнам.
Хотя основной целью оконного менеджера является управление окнами, многие оконные менеджеры имеют дополнительные функции, такие как обработка щелчков мыши в корневом окне , отображение панелей и других визуальных элементов, обработка некоторых нажатий клавиш (например, сочетание клавиш Alt-F4 может закрыть окно), выбор приложения для запуска при запуске и т. д.
Существуют стандартизированные протоколы, позволяющие обычным клиентам взаимодействовать с оконным менеджером. Первоначальным является Inter-Client Communication Conventions Manual (ICCCM), но он был заменен Extended Window Manager Hints (EWMH). Эти протоколы позволяют клиентам запрашивать заголовки для окон и значков, проверять, иконифицировано ли окно, которое может быть закреплено или свернуто, и, возможно, настраивать оформление окон, какой виртуальный рабочий стол занимает окно. [1] Дополнительная информация из оконного менеджера доступна через основной протокол, включая видимость окон, например, если окно скрыто на другом виртуальном рабочем столе , и выяснение настроек для рамок оконного менеджера. [ необходима цитата ]
Менеджер стековых окон отображает окна одно за другим на экране в определенных координатах. Если область одного окна перекрывает другое, то окно «сверху» перезаписывает часть видимого вида другого. Это приводит к внешнему виду, знакомому многим пользователям, в котором окна ведут себя немного как листы бумаги на рабочем столе, которые можно перемещать и позволять им перекрываться.
В отличие от композитных оконных менеджеров (см. ниже), отсутствие отдельных внеэкранных буферов может означать повышение эффективности, но такие эффекты, как полупрозрачность, невозможны.
К стековым оконным менеджерам относятся Amiwm , Blackbox , CTWM , Enlightenment , Fluxbox , FLWM , FVWM , IceWM , MWM , Openbox , TWM и Window Maker .
Тайловый оконный менеджер — это оконный менеджер с организацией экрана в виде взаимно неперекрывающихся кадров (отсюда и название «тайлинг» ), в отличие от традиционного подхода, основанного на координатах, когда объекты (окна) размещаются стопками, что пытается имитировать парадигму рабочего стола.
К тайловым оконным менеджерам относятся awesome , dwm , ion , larswm , ratpoison , Stumpwm , wmii , i3 , xmonad и XWEM.
Композитный оконный менеджер может показаться пользователю похожим на стековый оконный менеджер. Однако отдельные окна сначала визуализируются в отдельных буферах, а затем их изображения композируются в буфере экрана; этот двухэтапный процесс означает, что можно применять визуальные эффекты (такие как тени, полупрозрачность). Это также означает, что композитные оконные менеджеры по своей сути более прожорливы к ресурсам, чем эквивалентно мощный стековый оконный менеджер. По этой причине некоторые оконные менеджеры для X не поддерживают композицию по умолчанию, например Openbox . Композитинг в Lubuntu
Исторически Amiga в 1985 году, OSX в 2001 году, Java Looking Glass в 2003 году и демоверсия Windows Longhorn в 2003 году (отложенная до Vista в 2007 году) предшествовали попыткам композитинга в X11. Компоновочные оконные менеджеры для X включают:
Поддержку композитинга можно добавить в оконные менеджеры, не поддерживающие композитинг, с помощью таких композиторов, как Compton .
Виртуальный оконный менеджер — это оконный менеджер, который использует виртуальные экраны, разрешение которых может быть выше разрешения вашего монитора/ видеоадаптера, таким образом напоминая двумерный виртуальный рабочий стол с его областью просмотра . Эта среда очень полезна, когда требуется одновременно открыть большое количество окон. Было создано несколько виртуальных оконных менеджеров, включая FVWM , Tvtwm , HaZe [2] и другие.
Некоторые оконные менеджеры расширяемы или программируются с помощью пользовательских скриптов.
В этих оконных менеджерах пользователи могут определять новые действия или переопределять действия по умолчанию, а также реакции на различные события, такие как изменение размера и положения окна, создание и удаление окна, ввод с клавиатуры и мыши, таймер и т. д. Они также часто обеспечивают выполнение кода «на лету».
Вот некоторые примеры таких оконных менеджеров и используемых языков: