Найти тему
Linux code

Менеджеры окон X Window System

Оглавление

Менеджер окон — приложение, работающее в X Window System и определяющее интерфейс и взаимодействие с пользователем. В Unix-подобных операционных системах пользователь может выбрать любой оконный менеджер по своему усмотрению.

Оконный менеджер предоставляет средства для управления размещением и внешним видом отдельных окон приложений, а также взаимодействует с X Window System

Композитный менеджер окон

Композитный менеджер окон — менеджер окон, использующий возможности окружения (например, опциональной функции Composite X11-сервера или средств Windows Aero) по задействованию аппаратного ускорения для отображения прозрачности, отрисовки теней, отображения текстур, трёхмерных эффектов, анимации, экранных луп.

В отличие от ранних оконных менеджеров, которые делали каждую индивидуальную программу ответственной за предоставление своего окна непосредственно в кадровом буфере, композитный менеджер обеспечивает приложениям вне экрана буфер памяти окна и композитов окна в изображение, представляющее экран и пишет результат в кадровом буфере.

Композитный менеджер может выполнять дополнительную обработку буфера окна, применяя 2D- и 3D-анимационные эффекты, такие как альфа-смешивание, выцветание, масштабирование, поворот, копирование, изгиб и искривление, размытость. Также возможен перевод окна в один из нескольких дисплеев и виртуальных рабочих столов. Данная технология позволяет в режиме реального времени просчитывать такие эффекты как падающие тени, живые предварительные просмотры окон и другие сложные эффекты.

Среди первых в полной мере использующих композитные функции X11-сервера были менеджеры Beryl и Compiz, более поздние — Enlightenment, Mutter, также композитными стали менеджеры KWin и Xfwm.

Композитным менеджером для Microsoft Windows является Desktop Window Manager, для Mac OS X — Quartz Compositor

Фреймовый оконный менеджер

Фреймовый (или мозаичный, тайловый) оконный менеджер — это менеджер окон, разбивающий рабочее пространство экрана на взаимно не пересекающиеся прямоугольные области — фреймы. Каждый фрейм используется для вывода информации отдельным приложением, в противоположность традиционным менеджерам окон, которые создают области покоординатно и послойно («окна»), пытаясь следовать метафоре «рабочего стола». Помимо полного использования всего видимого пространства, подход тайловых оконных менеджеров позволяет минимизировать использование мыши в операциях с окнами, в основном применяя различные клавиатурные комбинации, уменьшая таким образом время, затрачиваемое на выполнение рутинных операций и повышая эффективность работы.

По похожей схеме работали первые версии Xerox Alto, а также Windows 1.0, однако из-за небольшого разрешения экрана тех лет подобный способ отображения информации не прижился. Первым оконным менеджером для X Window System, применившим эту модель, был larswm. За ним, летом 2000 года, вышел Ion. С тех пор появилось множество реализаций.

Awesome

Awesome
Awesome

Настраиваемый тайловый оконный менеджер для X. Быстрый, расширяемый и распространяется под лицензией GNU GPLv2.

В первую очередь предназначен для опытных пользователей, разработчиков и любых людей, занимающихся повседневными вычислительными задачами и желающих получить детальный контроль над своей графической средой.

i3

i3 wm
i3 wm

Тайловый оконный менеджер для X11, созданный под влиянием другого оконного менеджера wmii. Конфигурируется с помощью простого текстового файла. Позволяет значительно расширить свою функциональность благодаря возможности межпроцессного взаимодействия с помощью UNIX-сокетов.

Как и wmii, i3 в основном управляется через клавиатуру, причём клавиатурные сокращения похожи на те, которые используются в текстовом редакторе vi. Например, смена текущего окна производится нажатием клавиши Alt и одной из клавиш (J/K/L/;), а для перемещения текущего окна нужно зажать ещё и клавишу Shift (Alt+Shift+J/K/L/;).

Стековый менеджер окон

Стековый менеджер окон (англ. stacking window manager) - создает все окна в определенном порядке, позволяя им перекрываться, используя технику, называемую алгоритмом художника. Все оконные менеджеры, которые допускают перекрытие окон, но не композитные менеджеры окон, считаются составными оконными менеджерами, хотя возможно, что не все используют точно одинаковые методы. Другие оконные менеджеры, которые не считаются стековыми менеджерами окон, называются фреймовыми оконными менеджерами, которые не допускают перекрытия окон.

Стековые менеджеры окон позволяют окнам перекрываться, рисуя их по одному за раз. Наложение или перекрашивание (в соответствии с алгоритмом художника) относится к визуализации каждого окна в виде изображения, нарисованного непосредственно над рабочим столом и поверх любых других окон, которые уже могли быть нарисованы, эффективно стирая покрываемые области. Процесс обычно начинается с рабочего стола и продолжается рисованием каждого окна и любых дочерних окон сзади вперед, пока, наконец, не будет нарисовано окно переднего плана.

Порядок, в котором окна должны быть наложены, называется порядком наложения.

Наложение - это относительно медленный процесс, требующий перерисовки каждого окна по одному, от самого заднего и самого внешнего до самого переднего и самого внутреннего. Многие оконные менеджеры стека не всегда перерисовывают фоновые окна. Другие могут определить, когда требуется перерисовка всех окон, так как некоторые приложения запрашивают наложение, когда их выходные данные изменились. Повторное наложение обычно выполняется с помощью вызова функции менеджера окон, который выборочно перерисовывает окна по мере необходимости. Например, если фоновое окно перенесено на передний план, необходимо перерисовать только это окно.

Хорошо известным недостатком наложения является то, что когда окна закрашены друг на друга, они фактически стирают предыдущее содержимое любой части экрана, которую они покрывают. Эти окна должны быть перерисованы, когда они выводятся на передний план или когда видны их части. Когда окно изменено или когда изменилась его позиция на экране, диспетчер окон обнаружит это и может перекомпоновать все окна, требуя перерисовки каждого окна, и передать его новый внешний вид диспетчеру окон перед его прорисовкой. Когда приложение перестает отвечать на запросы, оно может быть не в состоянии перерисовать себя, что иногда приводит к тому, что область внутри рамки окна сохраняет изображения других окон, когда она выводится на передний план. Эта проблема обычно наблюдается в Windows XP и более ранних версиях, а также в некоторых менеджерах окон X Window System.

Другое серьезное ограничение, которое затрагивает почти все cтековые менеджеры окон, состоит в том, что они часто сильно ограничены в степени, в которой интерфейс может быть ускорен графическим процессором (GPU), и с этим очень мало что можно сделать.

Openbox

Openbox
Openbox

Менеджер окон для X Window System, выпущен под лицензией GNU General Public License. Создан на основе Blackbox, был полностью переписан на языке программирования C.

Openbox спроектирован таким образом, чтобы быть небольшим, быстрым и полностью совместимым с Руководством по соглашениям о межклиентском взаимодействии (ICCCM) и Советам по расширенному диспетчеру окон (EWMH). Он поддерживает множество функций, таких как меню, с помощью которых пользователь может управлять приложениями или которые отображают различную динамическую информацию.

Основным автором Openbox является Дана Янсенс из Карлтонского университета в Оттаве, Онтарио, Канада.