Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Windows для рабочих групп 3.11 рабочего стола, который использует оконный менеджер штабелирования.

Оконный менеджер штабелирования (также называемый плавающим менеджером окон ) является оконным менеджером , который привлекает все окна в определенном порядке, что позволяет им перекрывать, используя метод , называемый алгоритмом художника . Все оконные менеджеры, которые допускают перекрытие окон, но не являются составными оконными менеджерами , считаются стековыми оконными менеджерами, хотя возможно, что не все используют одни и те же методы. Другие оконные менеджеры, которые не считаются составными оконными менеджерами, - это те, которые не позволяют перекрывать окна, и называются тайловыми оконными менеджерами . [1]

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

Порядок расположения окон называется их z-порядком .

Ограничения [ править ]

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

С оконным менеджером стека, когда приложение не отвечает, оно может сохранить содержимое другого окна, первоначально показанного над ним.

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

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

Как избежать ограничений [ править ]

Некоторые технологические достижения позволили уменьшить или устранить некоторые недостатки штабелирования. Одно из возможных решений ограниченной доступности аппаратного ускорения - рассматривать одно окно переднего плана как особый случай, визуализируя его иначе, чем другие окна.

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

Однако, если оконный менеджер также может предоставить приложению обновленное изображение того, как выглядел экран до того, как было нарисовано окно переднего плана, но после того, как все другие окна уже были нарисованы, открывается больше возможностей. Это позволит одному окну на переднем плане казаться полупрозрачным, если использовать предыдущее изображение в качестве фильтра текстуры на конечном выходе. Это было возможно в Windows XP с программным обеспечением в комплекте с многим NVidia GeForce видеокарты , а также из третьих источников, с использованием аппаратного наложения текстуры. [3]

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

Полноэкранное видео также можно рассматривать как способ избежать ограничений, накладываемых наложением. Полноэкранный режим временно отключает необходимость любого управления окнами , позволяя приложениям иметь полный доступ к видеокарте. Ускоренные 3D-игры под Windows XP и ранее полностью полагались на этот метод, поскольку в эти игры нельзя было играть в оконном режиме. Однако технически этот метод не имеет ничего общего с оконным менеджером и является просто средством его замены.

Гибридные оконные менеджеры [ править ]

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

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

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

X Window System [ править ]

Многие оконные менеджеры в системе X Window предоставляют функциональность окон наложения:

  • 4Dwm
  • 9wm
  • AfterStep
  • amiwm
  • классно
  • Черный ящик
  • ctwm
  • cwm
  • dwm
  • Просвещение
  • Fluxbox
  • FLWM
  • FVWM
  • FVWM95
  • Goomwwm
  • Взломанный ящик
  • IceWM
  • JWM
  • KWin (с выключенным композитингом)
  • MWM
  • olwm
  • Открытая коробка
  • PekWM
  • PLWM
  • Рыба-пила
  • swm
  • tvtwm
  • twm
  • Window Maker
  • WindowLab
  • wm2
  • wmx

Microsoft Windows [ править ]

Microsoft Windows 1.0 отображала окна с помощью тайлового оконного менеджера . В Windows 2.0 он был заменен оконным менеджером стека, который позволял окнам перекрываться. Microsoft сохранила оконный менеджер стекирования через Windows XP, что серьезно ограничивало его способность отображать контент с аппаратным ускорением внутри обычных окон. Хотя было технически возможно произвести некоторые визуальные эффекты с помощью стороннего программного обеспечения. [3] Начиная с Windows Vista , новый оконный менеджер композитинга используется по умолчанию в совместимых системах. [4]

История [ править ]

  • 1970-е: Xerox Alto, который содержал первый рабочий коммерческий графический интерфейс, использовал оконный менеджер стекирования. [5]
  • Начало 1980-х: Xerox Star , преемник Alto, использовал мозаику для большинства основных окон приложений и использовал перекрытие только для диалоговых окон, устраняя необходимость в полном наложении. [6]
  • Классический Mac OS был один из самых ранних коммерчески успешных примеров графического интерфейса , который используется для штабелирования окна.
  • GEM 1.1 предшествовал Microsoft Windows и использовал стек, позволяющий перекрывать все окна. [7] В результате судебного иска Apple GEM была вынуждена отказаться от возможности объединения в стек. [8]
  • Amiga OS содержит ранний пример высокоразвитого оконного менеджера стекирования.

См. Также [ править ]

  • Оконный менеджер
  • Тайловый оконный менеджер
  • Составление оконного менеджера

Ссылки [ править ]

  1. ^ «Практическое руководство: выбор оконного менеджера в Linux» . Engadget .
  2. ^ "Алгоритм художника" . medialab.di.unipi.it .
  3. ^ a b «TweakGuides.com - Руководство по настройке Nvidia GeForce» . www.tweakguides.com .
  4. ^ «Диспетчер окон рабочего стола - Приложения Windows» . docs.microsoft.com .
  5. ^ Lineback, Натан. "Xerox Alto" . toastytech.com .
  6. ^ Lineback, Натан. «Ксерокс Звезда» . toastytech.com .
  7. ^ Lineback, Натан. "Скриншоты GEM 1.1" . Toastytech.com . Архивировано 25 декабря 2019 года . Проверено 1 августа 2016 .
  8. ^ Lineback, Натан. «Скриншоты GEM 2.0» . Toastytech.com . Архивировано 22 августа 2019 года . Проверено 1 августа 2016 .

Внешние ссылки [ править ]

  • Галерея графического интерфейса пользователя