Оконный менеджер — это системное программное обеспечение , которое управляет размещением и внешним видом окон в оконной системе в графическом пользовательском интерфейсе . [1] Большинство оконных менеджеров созданы для обеспечения среды рабочего стола . Они работают совместно с базовой графической системой, которая обеспечивает необходимую функциональность — поддержку графического оборудования, указывающих устройств и клавиатуры — и часто пишутся и создаются с использованием набора инструментов для виджетов .
Лишь немногие оконные менеджеры разработаны с четким различием между оконной системой и оконным менеджером. Каждый графический пользовательский интерфейс, основанный на метафоре окон, имеет ту или иную форму управления окнами. На практике элементы этой функциональности сильно различаются. [2] Элементы, обычно связанные с оконными менеджерами, позволяют пользователю открывать, закрывать, сворачивать, разворачивать, перемещать, изменять размер и отслеживать запущенные окна, включая декораторы окон . Многие оконные менеджеры также поставляются с различными утилитами и функциями, такими как панели задач , средства запуска программ, доки для облегчения разделения окон на экране пополам или на четверти, рабочие области для группировки окон, значки рабочего стола , обои, возможность сохранять выбранные окна на переднем плане, возможность «свернуть» окна, чтобы отображались только их заголовки, расположить окна каскадом, сложить окна в сетку, сгруппировать окна одной и той же программы на панели задач в целях экономии места и дополнительные многострочные панели задач. [3] [4] [5] [6]
В 1973 году Xerox Alto стал первым компьютером с работающим графическим интерфейсом WIMP . Он использовал многоуровневый оконный менеджер , который позволял перекрывать окна. [7] Однако он настолько опередил свое время, что его дизайнерская парадигма получила широкое распространение лишь более десяти лет спустя. Хотя неясно, содержит ли Microsoft Windows дизайн, скопированный с классической Mac OS от Apple , ясно, что ни одна из них не была первой, кто создал графический интерфейс с использованием многоуровневых окон. В начале 1980-х годов Xerox Star , преемник Alto, использовал мозаику для большинства основных окон приложений и использовал перекрытие только для диалоговых окон, устраняя большую часть необходимости в укладке. [8]
Классическая Mac OS была одним из первых коммерчески успешных примеров графического пользовательского интерфейса, который использовал своего рода управление окнами с помощью 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 содержала ранний пример оконного менеджера композиции под названием 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 , существует четкое различие между оконным менеджером и оконной системой . Строго говоря, оконный менеджер 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 появился диспетчер окон рабочего стола с компоновкой (dwm.exe) в качестве дополнительной альтернативы с аппаратным ускорением. В Windows, поскольку GDI является частью ядра, [13] роль оконного менеджера тесно связана с графическими подсистемами ядра и практически незаменяема, хотя для имитации тайлового оконного менеджера можно использовать сторонние утилиты. вершина таких систем. Начиная с Windows 8 , диспетчер окон рабочего стола на основе 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 и т. д. через сеть, и сверху будет отображаться и использоваться только их графический интерфейс. среды 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, если открыты и Блокнот , и Microsoft Paint , щелчок в окне Блокнота приведет к тому, что это окно станет активным. В Windows активное окно обозначается строкой заголовка другого цвета. Однако щелчок — не единственный способ выбора активного окна: некоторые оконные менеджеры (например, FVWM ) делают активным окно под указателем мыши — для переключения окон достаточно простого перемещения мыши; щелчок не нужен.
Менеджеры окон часто предоставляют возможность выбора активного окна с помощью клавиатуры вместо мыши. Одна из типичных комбинаций клавиш — Alt+Tab , используемая Windows и KDE (по умолчанию, хотя ее можно настроить пользователем); другой — яблочный ключ — тильда, используемый Macintosh. Нажатие соответствующей комбинации клавиш обычно переключает все видимые окна в определенном порядке, хотя возможны и другие действия.
Многие, хотя и не все, оконные менеджеры предоставляют область экрана, содержащую какой-либо визуальный элемент управления (часто кнопку) для каждого окна на экране. Каждая кнопка обычно содержит заголовок окна, а также может содержать значок. Эта область экрана обычно обеспечивает своего рода визуальную индикацию того, какое окно активно — например, кнопка активного окна может выглядеть «нажатой». Также обычно можно переключить активное окно, нажав на соответствующую кнопку. В Microsoft Windows эта область экрана называется панелью задач ; в системах Apple Macintosh эта область экрана называется док-станцией.
Активное окно не всегда может располагаться поверх всех остальных окон на экране. Активное окно — это просто окно, в которое передаются клавиши, набранные на клавиатуре; оно может быть визуально закрыто другими окнами. Это особенно актуально для оконных менеджеров, которые не требуют щелчка мыши для изменения активных окон: FVWM , например, делает активным окно под курсором мыши, но не меняет его Z-порядок (порядок, в котором появляются окна, измеряемый от фона). на передний план). Вместо этого необходимо нажать на границу окна, чтобы вывести его на передний план. В оконных менеджерах с фокусировкой по щелчку, таких как Microsoft Windows, также бывают ситуации, когда активное окно может быть скрыто; однако это встречается гораздо реже.