Графический интерфейс alt linux
Графический интерфейс не является неотъемлемой частью Linux — это просто одна из её компонент, такая же необязательная с точки зрения архитектуры системы, как, например, программа для рисования изображений. Но для тех программ, которые используют графические ресурсы, эта компонента предоставляет возможность работать с графическими объектами (линиями, прямоугольниками, цветами), ничего не зная о деталях работы конкретных устройств графического вывода (видеокарты и монитора). Это похоже на то, как ядро скрывает от программ детали работы с конкретным оборудованием, например, жёстким диском, предоставляя им работать с файлами. Поэтому комплекс программ, предоставляющий доступ к графическим ресурсам, называют графической подсистемой. В Linux функции графической подсистемы выполняет оконная система « Икс ».
Графическая подсистема с точки зрения операционной системы представляет собой группу обычных процессов, управление которыми производится общесистемными средствами. Точно так же, общесистемными средствами производится и управление процессами, запускаемыми « из-под » этой графической среды. Графическая подсистема отнюдь не монополизирует использование компьютера; параллельно с её работой продолжает исполняться множество служебных системных процессов; с других терминалов (если система многотерминальная) могут запускаться другие программы или даже другие графические подсистемы.
Оконная система Икс (от англ. X window system, далее — просто X ) — один из самых больших и успешных проектов в истории компьютерной техники — восходит к 1984 г., когда разработчики двух систем компьютерной графики, претендующих на универсальность — проектов Athena (Массачусетский технологический институт) и W Windowing (Стэнфордский университет) — решили объединить свои усилия. Подробнее об истории этого проекта можно узнать, например, из статьи в Wikipedia.
Тогда перед ними стояла задача создать систему компьютерной графики, позволяющую совместно использовать самые разные компьютерные платформы. Решением стало создание специального протокола X, который позволял разделить программы-клиенты и сервер, предоставляющий графические ресурсы, отсюда и возможность исполнять программу-клиент на одном компьютере, сервер на другом, а данные между ними передавать по сети.
Проект этот был настолько наукоёмок и настолько полно охватывал тогдашнюю область задач, связанных с графикой, что серьёзных альтернатив ему так и не возникло. С тех пор X прошла через одиннадцать основных релизов (отсюда другое название — X11, представляющее собой название и текущую версию протокола) и множество версий. И возникновение, и вся история развития X тесно связаны с ОС UNIX , а теперь, естественно, и Linux . Тем не менее, реализации X доступны и для нескольких альтернативных архитектур ОС, включая Windows NT.
Существует несколько реализаций X , дальнейшее изложение будет ориентировано на две широко распространённые свободные реализации: XFree86 и XOrg. XFree86 изначально создавалась для семейства процессоров Intel 386, и вплоть до 2004 года была самой популярной реализацией X . XFree86 поддерживает беспрецедентно широкий спектр оборудования (оно и понятно, учитывая существующий « зоопарк » видеокарт и устройств ввода для платформы PC). Благодаря доступности исходных текстов и пользовательской аудитории в десятки миллионов человек, XFree86 весьма устойчива и хорошо оттестирована, по крайней мере, насколько это возможно для такого разнообразия поддерживаемого оборудования.
В последние годы параллельно с XFree86 развивается основанная на тех же исходных текстах X Window System графическая подсистема XOrg. До недавнего времени по спектру поддерживаемого оборудования, архитектур и функциональности XOrg мало чем отличалась от XFree86 , и сейчас они тоже примерно эквивалентны с точки зрения пользователя. Однако направление развития этих двух проектов, состав их разработчиков и лицензионная политика несхожи. В ближайшем будущем вполне вероятно, что XOrg обгонит XFree86 и по возможностям, и по частоте использования.
Большинство из того, о чем будет говориться в последующих разделах, справедливо для любой реализации X на любом оборудовании и под любой ОС , список которых можно найти на http://www.X.org.
Цветной бутерброд
Большинство пользователей, установив систему, получают в своё распоряжение готовую графическую среду. Однако то, что сидящему за монитором представляется сплошной графической операционной средой, реализовано как многослойный бутерброд технологий. Попробуем разобраться в его устройстве « по слоям ».
« Чистая » X
Непосредственно с оборудованием (видеосистемой, устройствами ввода и динамиком) работает X-сервер. Перечисленное оборудование в совокупности называется X-терминалом (аппаратным X -терминалом называется и специализированный компьютер, на котором исполняется исключительно X -сервер). X-сервер захватывает оборудование и предоставляет возможность выводить на эти устройства и получать от них ввод другим программам — X-клиентам — по особому протоколу, который так и называется, X -протокол.
Ещё одним ресурсом, который предоставляет X -сервер, являются шрифты. Оперировать шрифтами он может самостоятельно, либо с помощью другой программы, которая обеспечивает масштабирование шрифтов — фонт-сервера (от англ. font — шрифт).
На Рисунок 1, «Чистая X» показана « чистая » оконная система X — когда запущен только X -сервер и никаких приложений — то, с чем большинство пользователей никогда не сталкивается. Запустить её обычно можно, подав команду: X & .
Рисунок 1. Чистая X
Мы видим традиционный серый экран с не менее традиционным курсором в виде буквы « x ». Используя мышь или другое координатное устройство, курсор можно перемещать по экрану. На нажатие кнопок мыши и клавиш никакой видимой реакции не следует. И невидимой тоже — сервер готов передавать эти сигналы своим клиентам, а клиенты пока не запущены. Хотя на самом деле некоторые комбинации клавиш X перехватывает и обрабатывает. Это Zap ( Ctrl + Alt + Backspace ) — завершение работы сервера (если эта возможность не запрещена при конфигурации), Zoom ( Ctrl + Alt + + и Ctrl + Alt + — ) — « горячее » переключение доступных видеорежимов. В некоторых ОС (Например, GNU/Linux ) Ctrl + Alt в сочетании с функциональной клавишей освобождает оборудование и передаёт его на время соответствующей виртуальной консоли — запущенной в неграфическом режиме (обычно, vga-режиме) программе, позволяющей пользователю зарегистрироваться в системе и получить доступ к командной строке оболочки.
Рисунок 2. xterm в среде X
Воспользуемся последней возможностью, перейдём на консоль и запустим первое клиентское приложение: программу xterm (Рисунок 2, «xterm в среде X»). На экране X появилось окно, а в окне можно видеть интерфейс клиентского приложения. В данном случае интерфейс текстовый, а приложение представляет собой эмулятор терминала, на котором запущена командная оболочка системы по умолчанию. С эмулятором можно делать все то же, что и с обычным терминалом: издавать команды, получать результат и запускать другие программы. Если программы текстовые (строчные или оконные), исполняться они будут в том же окне, а если графические (как и сам xterm ) — в отдельных окнах.
Рисунок 3. xclock в среде X
Запустим программу xclock (Рисунок 3, «xclock в среде X»). При её запуске мы использовали несколько параметров, задающих геометрию (местоположение и размер) вновь порождаемого окна, цвет его фона и шрифта по умолчанию, толщину и цвет рамки. Эти (и некоторые другие) параметры типичны для программ, построенных на основе графической библиотеки X Toolkit . Все значения параметров, заданные при вызове программы, кроме геометрии окна (местоположения на экране и размера), могут быть перекрыты самим запускающимся приложением. Дело в том, что окно выделяется клиентскому приложению при запуске, и все доступные ему ресурсы этим окном и ограничены — это свойство X -протокола. Переместить окно или изменить его размер средствами « чистой » X невозможно.
Запустив несколько экземпляров того же xterm (и почитав документацию) можно обнаружить, что и « чистая » X умеет не так мало. Например, оперирует буфером обмена текстом между приложениями и предоставляет текстовым приложениям такой ресурс, как полосу прокрутки (полоса сбоку окна, при помощи которой можно листать текст вверх или вниз, щёлкая по ней левой и правой кнопками мыши соответственно, — это наследие проекта Athena ).
Итак, ключевой компонент графической платформы — X -сервер:
создаёт по запросу других программ (которые в этой терминологии называются X-клиентами) окна;
предоставляет другим программам возможность работы в окнах, т. е. вывода информации в эти окна и обработки сигналов от устройств ввода (клавиатуры и мыши или другого координатного устройства), когда окно, назначенное программе, является активным. Предоставление ресурсов возможно в том числе и через сеть, когда клиент и сервер работают на разных компьютерах (узлах).
В среде, образуемой X -сервером, окно, выделяемое клиенту, является фиксированным: его геометрия задаётся при запуске клиента и сохраняется в течение всего сеанса работы с этим клиентом. Есть ли польза от системы, работающей с фиксированными окнами? Да, это вполне соответствует цели создания специализированных систем с графическим интерфейсом пользователя. Примером такой системы может служить терминал, позволяющий получать справки о расписании поездов и стоимости проезда, установленный на вокзале. Однако этих возможностей совершенно недостаточно для универсального « настольного » применения компьютера.
При универсальном применении компьютера характерна поочерёдная работа с различными программами (иногда достаточно большим их количеством), причём пользователь может отрываться, допустим, от редактирования текста, чтобы поработать с иллюстрацией при помощи другой программы, прочитать почту или заглянуть на интернет-страницу, затем возвращаться к редактированию текста и т. д. Эти возможности обеспечивает другая программа — менеджер окон, представляющая собой следующий « слой » в графической среде пользователя.
Менеджеры окон
Для одновременной и поочерёдной работы с разными программами, требуется возможность управлять окнами (с помощью клавиатуры или мыши), т. е. возможность изменять « на лету » их геометрию (положение и размеры), а также (обычно не относимое к геометрии) положение в воображаемой « стопке » окон — от этого зависит, какое из окон будет « верхним » (видимым полностью), если окна перекрывают друг друга на плоскости экрана.
Управление окнами и составляет основную функцию оконного менеджера. Устоявшийся англоязычный термин window manager, относящийся к этому классу программ, мы будем передавать далее словосочетанием-калькой « оконный менеджер », которое, впрочем, не представляется особенно удачным, так же, как и встречающиеся в литературе « менеджер окон », « администратор окон » и « диспетчер окон ».
Технически ограничение на изменение геометрии однажды выделенного X -сервером окна преодолевается оконным менеджером за счёт того, что ему в качестве окна выделяется весь экран. Окно во весь экран может быть названо корневым, по аналогии с корневым каталогом в файловой системе. На самом деле, менеджер окон — не единственная программа, способная работать с корневым окном; например, входящая в комплект поставки X утилита xsetroot позволяет установить цвет фона или поместить на него рисунок.
Прикладным программам, таким образом, выделяются далее уже не окна собственно X , а окна оконного менеджера. Изменение положения окна в подавляющем большинстве случаев ничего не требует от программы-клиента, однако желательно, чтобы программа была достаточно « сообразительной », чтобы изменить своё поведение при изменении размеров выделенного ей окна « на лету ». Это справедливо для большинства, но не для всех программ (в частности, этого « не умеют » многие старые программы и некоторые компьютерные игры).
В свою очередь, и оконный менеджер может быть достаточно « умен », чтобы понять, что программа не реагирует на изменение геометрии окна, и запретить пользователю изменять размеры окна для данной программы (чтобы он не оказался в ситуации, когда ему видна лишь часть области вывода программы или наоборот, часть окна прикладной программы пуста). Однако такое решение может привести к весьма дискомфортным ситуациям (например, если при запуске программы её окно оказывается больше экрана) [1] .
Менеджеров окон существует превеликое множество — под любой набор задач, которые может решать графическая многооконная система. Их настолько много, что выбрать какой-нибудь в качестве « типичного представителя семейства » затруднительно. Поэтому выберем один из самых развитых — Enlightenment .
« Просвещение » (англ. enlightenment) создано Карстеном Хайцлером и Джеффом Харрисоном (Carsten Haitzler, Geoff Harrison). До 2000 г. он был основным менеджером окон в популярной среде GNOME , затем уступив это место менее функциональной, но более быстрой « Рыбе-пиле » ( Sawfish ). Он продолжает оставаться GNOME -совместимым, и многие пользователи этой популярной среды предпочитают его, хотя и без GNOME у Enlightenment поклонников хватает.
Рисунок 4. Оконный менеджер Enlightenment
Запустим Enlightenment (Рисунок 4, «Оконный менеджер Enlightenment»), набрав в командной строке xterm enlightenment & . Первое, что мы видим — это появившиеся вокруг окна нашего xterm элементы оформления: рамка и строка заголовка с кнопками. Окно теперь можно перемещать по экрану, « ухватив » за заголовок, масштабировать (изменять размер), « взяв » за бок или за угол, максимизировать, минимизировать или закрыть, нажав соответствующую кнопку. Спрашивается, что ещё можно делать с окном?
Рисунок 5. Оконное меню Enlightenment
Вопрос не праздный. Нажав на левую кнопку в заголовке, получаем неожиданно разнообразное меню таких действий (Рисунок 5, «Оконное меню Enlightenment»). Оказывается, его можно ещё уничтожить (Annihilate), поднять/опустить (Raise/Lower), скрутить/раскрутить (Shade/Unshade) приклеить/отклеить (Stick/Unstick) и выполнить ещё массу действий, для которых потребовались отдельные меню. Набор этих действий зависит от конкретного менеджера окон (и Enlightenment — один из самых богатых возможностями), а то, какие из них выведены в строку заголовка отдельными кнопками, — от того, как он настроен (пользователем или по умолчанию).
Базовая (а также расширенная) функциональность оконных менеджеров доступна пользователю прежде всего за счёт введения в интерфейс так называемых виджетов (от англ. widgets, сокращение от window gadgets, « оконные приспособления »). Виджеты — это рамки, кнопки, меню и пр., которые служат « органами управления » окна. Технически (в терминах оконной системы X ) виджеты представляют собой отдельные окна, примыкающие к окну прикладной программы и, как правило, перемещающиеся вместе с ним.
Рисунок 6. Виджеты
Обрамление окна обычно составляют следующие элементы:
При « буксировке » рамки мышью окно изменяет свой размер. Иногда для изменения размера окна предназначены только выделенные « уголки » рамки, представляющие собой отдельные виджеты.
Часто совпадает с одной из (обычно, верхней) сторон рамки. В полосе заголовка может содержаться название программы или запустившая программу команда, а также другая информация, специфичная для окна. При « буксировке » полосы заголовка перемещается все окно. Со « щелчками » различными кнопками мыши на полосе заголовка также могут быть связаны различные действия по управлению окнами.
Кнопки управления окном
Часто вынесенные на полосу заголовка или в другое место рамки кнопки позволяют выполнить с ним такие действия, как закрытие (часто сопровождающееся выходом из программы, открывшей окно), максимизация (разворачивание окна на весь экран), минимизация/сворачивание, вызов меню управления окном, которое может содержать весьма обширный репертуар других действий.
Детали реализации обрамления окна могут быть весьма различными в зависимости от конкретного оконного менеджера и его настроек.
Откуда берутся такие ресурсы, как виджеты, их декор и способ поведения? Конечно, менеджер окон может содержать их в себе. Но такой подход не очень характерен для открытых систем, одним из принципов разработки которых является компонентность. Поэтому виджеты и их функции обычно объединяются в стандартные библиотеки (toolkits), которые могут быть использованы множеством различных программ. Большинство развитых менеджеров окон, менеджеров рабочего стола и разработанных специально для них приложений можно сгруппировать по библиотекам виджетов, с опорой на которые они разработаны.
С точки зрения пользователя виджеты, составляющие обрамление окна, часто воспринимаются как его часть. Однако не следует забывать, что внутри окна (содержимым которого управляет уже прикладная программа, а не менеджер окон) зачастую тоже есть свои виджеты: кнопки, полосы прокрутки, переключатели, меню и т. п. В общем случае, используемые оконным менеджером и прикладной программой библиотеки виджетов могут и не совпадать.
Собственно, управление окнами — основная функция оконного менеджера, и на этом его функциональность может и заканчиваться. Однако большинство из них выполняют по крайней мере ещё одну функцию.
Рисунок 7. Пейджер
Вы уже обратили внимание на то, что при запуске Enlightenment на экране появилось ещё одно окно. Это так называемый пейджер (pager), на Рисунок 7, «Пейджер» он изображён крупным планом. На пейджере представлена миниатюрная копия экрана, обновляющаяся в режиме реального времени, причём, если подвести курсор к изображению отдельного окна, оно увеличивается и рядом высвечивается название приложения, запущенного в нем. Но почему экран занимает только четверть окна пейджера? Потому что оконный менеджер позволяет оперировать « виртуальным » столом (от англ. virtual desktop, также рабочим столом), по размеру превышающим физический экран, а пейджер — одно из средств перемещения физического экрана по рабочему столу. Enlightenment позволяет создавать до 64 экранов на рабочем столе.
Менеджер окон, который помимо управления окнами обладает рядом дополнительных функций, может использоваться в качестве операционной графической среды пользователя, предоставляющей полный спектр возможностей для параллельной работы с несколькими задачами. Наиболее часто такими дополнительными функциями являются следующие:
Работа на экране, « захламлённом » десятком различных окон, может быть дискомфортной, и крайне полезна возможность свернуть (минимизировать) окно со временно неиспользуемой программой. Для того, чтобы средствами графической среды можно было окно затем развернуть, оно и в свёрнутом состоянии должно каким-то образом отображаться. Существует несколько относительно распространённых способов отображения свёрнутых окон. Например, « на столе » может оставаться полоса заголовка свёрнутого окна, по щелчку на которой оно вновь разворачивается. Свёрнутым окнам могут соответствовать пиктограммы (иконки, значки) на поверхности рабочего стола или в специально отведённом для этого окне ( панели управления). Свёрнутые окна могут отображаться как пункты общего или специального меню (см. ниже).
Управление несколькими рабочими столами
Практика показывает, что для многих продвинутых пользователей, которые осваивают открытые системы, уже имея опыт работы в характерных для ПК альтернативных системах, именно возможность работать на нескольких рабочих столах оказывается решающим плюсом оконной системы X . Действительно, переключение между виртуальными рабочими столами позволяет организовать комфортную работу со множеством программ даже на мониторах с относительно низким разрешением (1024х728, 800х600) и физическими размерами (17, 15-дюймовыми). В иных условиях комфортность работы существенно снизилась бы, или настоятельной необходимостью стало бы приобретение более крупного и ёмкого монитора (что зачастую влечёт за собой необходимость смены графической карты и прочих недешёвых мероприятий). Все современные оконные менеджеры поддерживают виртуальные рабочие столы, правда называются они везде по-разному: столы, рабочие области или экраны. До предела (чтобы не сказать, до абсурда) эта функциональность развита в оконном менеджере Enlightenment , который позволяет организовать до 64 экранов на рабочем столе, при этом рабочих столов также может быть более одного (точнее, до 32). Трудно представить, зачем может понадобиться две тысячи с лишним отдельных экранов (как правило, четырёх экранов хватает с избытком для любых практических задач), однако возможности приёма демонстрируются этим в полный рост.
Быстрый запуск команд
Возможность быстрого запуска предуготовленных команд обычно ассоциируется с общим меню (главным меню), вызываемым щелчком мыши на особом виджете, не связанном с прикладными окнами, или в свободной от прикладных окон области экрана.
Настройка внешнего вида и поведения среды
Поведение — реакция отдельных виджетов на операции с ними, модель фокусировки (способ переключения активного в данный момент окна, с которым связан ввод с клавиатуры и мыши) и т. п. Поведение и внешний вид оформления окон, а также наличие на экране общих виджетов, не связанных с конкретными прикладными окнами, обои (цвет фона или изображение в корневом окне) и т. п. могут варьировать в очень широких пределах. Иногда возможности такой настройки считают некими « архитектурными излишествами », однако более взвешенной является точка зрения, согласно которой в хорошем визуальном дизайне (так же, как и в хорошей архитектуре) ничто не является излишеством.
Рисунок 8. Меню настройки Enlightenment
Пример возможностей настройки менеджера окон даёт тот же Enlightenment . Его меню настройки можно увидеть, щёлкнув правой кнопкой мыши на фоне экрана (Рисунок 8, «Меню настройки Enlightenment»). Исследовав возможности настройки, можно обнаружить, что сказанное выше о способах работы с этим менеджером окон весьма условно, потому что поменять можно буквально все, от декора виджетов до количества и функций элементов оформления окон и их реакции на различные действия.
Лишь один пример: сколько способов визуализировать перемещение окна вы знаете? Разработчики Enlightenment придумали целых шесть, включая фантастический « полупрозрачный ». Настройки и расширения Enlightenment можно объединять в темы (англ. themes) и обмениваться ими.
Выше речь шла о таких свойствах Enlightenment , которые предположительно являются общими для всех оконных менеджеров. Но при этом чаще обычного употреблялись слова « обычно », « как правило », « может » и т. п. Это связано с чрезвычайным разнообразием решений на базе распространённых оконных менеджеров. Ниже более подробно и определённо речь пойдёт ещё о нескольких оконных менеджерах.
Оконные менеджеры BlackBox и FluxBox
BlackBox — один из самых компактных и быстродействующих оконных менеджеров. Он позволяет эффективно организовать работу на рабочем столе, не « захламляя » его ненужными ссылками и не расходуя экранное пространство на отображение громоздких элементов оформления.
Рисунок 9. Оконный менеджер BlackBox
Наряду с базовой функциональностью, BlackBox предоставляет (факультативно) панель, содержащую кнопки переключения между рабочими столами (по умолчанию их четыре) и заголовки открытых окон. Общее меню вызывается щелчком правой кнопкой мыши на свободном от окон месте рабочего стола. Меню (или любое из вложенных в него меню) щелчком по заголовку может быть превращено в окно, остающееся на экране до явного его закрытия щелчком на соответствующей кнопке.
По умолчанию на полосе заголовка каждого окна присутствуют кнопки сворачивания (сворачивание можно выполнить также двойным щелчком на самом заголовке), максимизации и закрытия окна. Свёрнутое окно присутствует на экране в виде полосы заголовка, развернуть его можно повторным двойным щелчком на полосе заголовка или из меню Workspaces (рабочие области), доступного по щелчку средней кнопкой мыши на свободном от окон месте рабочего стола. Это же меню позволяет перейти на другой стол, добавить или удалить стол из рабочего пространства.
BlackBox поддерживает различные модели фокусировки ввода. Фокусировка по щелчку мыши (от англ. click to focus) позволяет реализовать стиль работы, привычный для пользователей KDE : окно становится активным (принимающим текущий ввод с клавиатуры и от мыши) после щелчка на нем. Активное окно автоматически становится верхним (видимым полностью, даже если оно частично перекрывается с другими окнами). Небрежная фокусировка (от англ. sloppy focus) предполагает активизацию окна при попадании на него курсора мыши (окно при этом не « всплывает » автоматически наверх).
Наряду с панелью и конвертируемыми в дополнительные окна-панели меню, BlackBox реализует ещё один автономный виджет — так называемую щель (англ. slit). Щель располагается на краю видимого экрана и может содержать маленькие (без обрамления) окна специализированных программ (их существует около десяти), индицирующих какие-либо состояния среды или позволяющих быстро выполнить часто исполняемые действия.
На основе BlackBox созданы два более развитых оконных менеджера — OpenBox и более популярный FluxBox .
Внешний вид BlackBox , FluxBox и OpenBox легко настраивается с помощью механизма тем рабочих столов.
Источник