Менеджер окон — это системное программное обеспечение , которое управляет размещением и внешним видом окон в системе управления окнами в графическом пользовательском интерфейсе . [1] Большинство менеджеров окон предназначены для обеспечения среды рабочего стола . Они работают совместно с базовой графической системой, которая обеспечивает требуемую функциональность — поддержку графического оборудования, указывающих устройств и клавиатуры — и часто пишутся и создаются с использованием набора инструментов виджетов .
Немногие оконные менеджеры разработаны с четким различием между оконной системой и оконным менеджером. Каждый графический пользовательский интерфейс, основанный на метафоре окон, имеет некоторую форму управления окнами. На практике элементы этой функциональности сильно различаются. [2] Элементы, обычно связанные с оконными менеджерами, позволяют пользователю открывать, закрывать, сворачивать, разворачивать, перемещать, изменять размер и отслеживать запущенные окна, включая декораторы окон . Многие оконные менеджеры также поставляются с различными утилитами и функциями, такими как панели задач , средства запуска программ, доки для облегчения деления окон на две или четыре части на экране, рабочие пространства для группировки окон, значки рабочего стола , обои, возможность удерживать выбранные окна на переднем плане, возможность «сворачивать» окна, чтобы показывать только их заголовки, каскадировать окна, складывать окна в сетку, группировать окна одной и той же программы на панели задач для экономии места и опциональные многорядные панели задач. [3] [4] [5] [6]
В 1973 году Xerox Alto стал первым компьютером, поставляемым с рабочим графическим интерфейсом WIMP . Он использовал стековый оконный менеджер , который позволял перекрывать окна. [7] Однако это было так далеко впереди своего времени, что его парадигма дизайна не получила широкого распространения до более чем десятилетие спустя. Хотя неясно, содержит ли Microsoft Windows дизайн, скопированный с классической Mac OS от Apple , ясно, что ни одна из них не была первой, кто создал графический интерфейс, использующий стековые окна. В начале 1980-х годов Xerox Star , преемник Alto, использовал мозаичное размещение для большинства основных окон приложений и использовал перекрытие только для диалоговых окон, устраняя большую часть необходимости в стекировании. [8]
Классическая Mac OS была одним из самых ранних коммерчески успешных примеров GUI, который использовал своего рода стековое управление окнами через QuickDraw . Ее преемник, macOS , использует несколько более продвинутый оконный менеджер, который поддерживал композицию с Mac OS X 10.0 и был обновлен в Mac OS X 10.2 для поддержки аппаратно-ускоренной композиции через Quartz Compositor . [9]
GEM 1.1 от Digital Research — операционная среда , включающая стековый оконный менеджер, позволяющий всем окнам перекрываться. Она была выпущена в начале 1980-х годов. [10] GEM известен тем, что был включен в качестве основного графического интерфейса пользователя в Atari ST , на котором работала Atari TOS , а также был популярным графическим интерфейсом пользователя для MS-DOS до широкого распространения Microsoft Windows. В результате судебного иска Apple Digital Research была вынуждена удалить возможности стекирования в GEM 2.0, сделав свой оконный менеджер тайлинговым оконным менеджером. [11]
В середине 1980-х годов Amiga OS содержала ранний пример составного оконного менеджера под названием Intuition (одна из низкоуровневых библиотек AmigaOS, которая присутствовала в системных ПЗУ Amiga ), способного распознавать, какие окна или их части были закрыты, а какие окна находились на переднем плане и полностью видны, поэтому он мог рисовать только те части экрана, которые требовали обновления. Кроме того, Intuition поддерживал состав. Приложения могли сначала запросить область памяти за пределами текущей области отображения для использования в качестве растрового изображения. Затем оконная система Amiga использовала серию битовых блитов с использованием аппаратного блиттера системы для создания композита из растровых изображений этих приложений, а также кнопок и ползунков, в памяти дисплея, не требуя от этих приложений перерисовывать какие-либо из своих растровых изображений.
В 1988 году Presentation Manager стал оболочкой по умолчанию в OS/2 , которая в своей первой версии использовала только интерфейс командной строки (CLI). IBM и Microsoft разработали OS/2 как преемника DOS и Windows для DOS. Однако после успеха Windows 3.10 Microsoft отказалась от проекта в пользу Windows. После этого проект Microsoft для будущей версии OS/2 3 стал Windows NT , и IBM полностью переделала оболочку OS/2, заменив Presentation Manager из OS/2 1.x на объектно-ориентированную Workplace Shell , дебютировавшую в OS/2 2.0. [12]
В системах, использующих систему X Window , существует четкое различие между оконным менеджером и оконной системой . Строго говоря, оконный менеджер X не взаимодействует напрямую с видеооборудованием, мышами или клавиатурами — это ответственность сервера отображения .
Пользователи X Window System могут легко использовать множество различных оконных менеджеров — Metacity , используемый в GNOME 2 , и KWin , используемый в KDE Plasma Workspaces , и многие другие. Поскольку многие оконные менеджеры являются модульными, [ неопределенно ] люди могут использовать другие, [ неопределенно ] такие как Compiz ( менеджер окон с 3D-композицией ), который заменяет оконный менеджер. [ неопределенно ] Sawfish и awesome , с другой стороны, являются расширяемыми оконными менеджерами, предлагающими точное управление окнами. Компоненты различных оконных менеджеров можно даже смешивать и подбирать; например, оформление окон из KWin можно использовать с компонентами рабочего стола и дока GNOME.
Менеджеры окон X также имеют возможность переподчинять приложения, что означает, что, хотя изначально все приложения принимаются корневым окном (по сути, всем экраном), приложение, запущенное в корневом окне, может быть принято (т. е. помещено внутрь) другим окном. Менеджеры окон в системе X Window принимают приложения из корневого окна и переподчиняют их, чтобы применить оформление окна (например, добавить строку заголовка). Переподчинение также может использоваться для добавления содержимого одного окна в другое. Например, приложение Flash Player может быть переподчинено окну браузера и может отображаться для пользователя как предположительно часть этой программы. Таким образом, переподчиняющие менеджеры окон могут размещать одну или несколько программ в одном окне и могут легко комбинировать мозаичное и стековое размещение различными способами.
Microsoft Windows предоставляет интегрированный стековый оконный менеджер с Windows 2.0 ; Windows Vista представила композитный Desktop Window Manager (dwm.exe) как дополнительную аппаратно-ускоренную альтернативу. В Windows, поскольку GDI является частью ядра, [13] роль оконного менеджера тесно связана с графическими подсистемами ядра и в значительной степени не заменяема, хотя сторонние утилиты могут использоваться для имитации тайлового оконного менеджера поверх таких систем. Начиная с Windows 8 , Desktop Window Manager на основе Direct3D больше не может быть отключен. [14] Его можно перезапустить только с помощью комбинации горячих клавиш Ctrl+Shift+Win+B. [15]
Проводник Windows (explorer.exe) по умолчанию используется в качестве оболочки в современных системах Windows для предоставления панели задач и файлового менеджера, а также многих функций оконного менеджера; аспекты Windows можно изменять с помощью предоставленных утилит настройки, редактирования реестра Windows или с помощью сторонних инструментов, таких как WindowBlinds или Resource Hacker .
Полный X Windows Server, позволяющий использовать оконные менеджеры, портированные из мира Unixoid, также может быть предоставлен для Microsoft Windows через Cygwin/X даже в многооконном режиме (и другими реализациями X Window System). Таким образом, можно легко запустить клиентские программы X Window System либо в той же среде Cygwin на той же машине, либо в системе Linux, BSD Unix и т. д. через сеть, и только их GUI будет отображаться и использоваться поверх среды Microsoft Windows.
Обратите внимание, что Microsoft и X Window System используют разные термины для описания схожих концепций. Например, Microsoft редко упоминает термин « менеджер окон» , поскольку он интегрирован и не подлежит замене, а также отличается от оболочки . [ необходимо разъяснение ] [16] Оболочка Windows аналогична концепции среды рабочего стола в других системах графического пользовательского интерфейса.
С 2021 года ChromeOS поставляется с собственным оконным менеджером Ash. [17] Chromium и ash имеют общую кодовую базу . [17] Раньше его можно было запустить, используя google-chrome --open-ash
на любых совместимых системах.
Оконные менеджеры часто делятся на три или более классов, которые описывают, как окна отрисовываются и обновляются.
Композитные оконные менеджеры позволяют создавать и рисовать все окна отдельно, а затем объединять их и отображать в различных 2D и 3D средах. Самые продвинутые композитные оконные менеджеры допускают большое разнообразие внешнего вида и ощущений интерфейса, а также наличие расширенных 2D и 3D визуальных эффектов.
Все оконные менеджеры, которые имеют перекрывающиеся окна и не являются композитными оконными менеджерами, являются стековыми оконными менеджерами , хотя возможно, что не все используют те же методы. Стековые оконные менеджеры позволяют окнам перекрываться, сначала рисуя фоновые окна, что называется алгоритмом художника . Изменения иногда требуют, чтобы все окна были переуложены или перерисованы, что обычно включает в себя перерисовку каждого окна. Однако, чтобы вывести фоновое окно на передний план, обычно требуется перерисовать только одно окно, поскольку фоновые окна могут иметь части других окон, нарисованных поверх них, эффективно стирая покрытые области.
Тайловые оконные менеджеры рисуют все окна на экране, размещая их рядом друг с другом или друг над другом и друг под другом, так что ни одно окно не перекрывает другое. Microsoft Windows 1.0 использовал тайловую разметку, и для X доступны различные тайловые оконные менеджеры , такие как i3 , awesome и dwm .
Динамические оконные менеджеры могут динамически переключаться между мозаичным или плавающим расположением окон. Доступны различные динамические оконные менеджеры для X.
Активное окно — это текущее сфокусированное окно в текущем оконном менеджере. Различные оконные менеджеры по-разному обозначают текущее активное окно и позволяют пользователю переключаться между окнами по-разному. Например, в Microsoft Windows, если открыты и Notepad , и Microsoft Paint , щелчок в окне Notepad сделает это окно активным. В Windows активное окно обозначается другим цветом заголовка. Однако щелчок — не единственный способ выбора активного окна: некоторые оконные менеджеры (например, FVWM ) делают окно под указателем мыши активным — для переключения окон достаточно просто переместить мышь; щелчок не требуется.
Оконные менеджеры часто предоставляют способ выбора активного окна с помощью клавиатуры в качестве альтернативы мыши. Одной из типичных комбинаций клавиш является Alt+Tab , используемая Windows и KDE (по умолчанию, хотя это настраивается пользователем); другой — клавиша Apple -тильда, используемая Macintosh. Нажатие соответствующей комбинации клавиш обычно циклически перебирает все видимые окна в некотором порядке, хотя возможны и другие действия.
Многие, хотя и не все, оконные менеджеры предоставляют область экрана, содержащую некий визуальный элемент управления (часто кнопку) для каждого окна на экране. Каждая кнопка обычно содержит заголовок окна и может также содержать значок. Эта область экрана обычно обеспечивает некий визуальный индикатор того, какое окно активно — например, кнопка активного окна может выглядеть «вдавленной». Также обычно можно переключить активное окно, нажав на соответствующую кнопку. В Microsoft Windows эта область экрана называется панелью задач ; в системах Apple Macintosh эта область экрана называется доком.
Активное окно не всегда может находиться поверх всех других окон на экране. Активное окно — это просто окно, в которое отправляются набранные на клавиатуре клавиши; оно может быть визуально закрыто другими окнами. Это особенно актуально в оконных менеджерах, которые не требуют щелчка для смены активных окон: например, FVWM делает активным окно под курсором мыши, но не меняет его Z-порядок (порядок, в котором появляются окна, измеряемый от фона до переднего плана). Вместо этого необходимо щелкнуть по границе окна, чтобы вывести его на передний план. Существуют также ситуации в оконных менеджерах с щелчком для фокусировки, таких как Microsoft Windows, когда активное окно может быть закрыто; однако это встречается гораздо реже.