![]() |
Библиотека Интернет Индустрии I2R.ru |
||
![]() ![]() |
Графика в Открытых системахДо середины девяностых существовали отдельно компьютерная графика и
отдельно - настольные игры в компьютерную графику. Я очень радовался,
когда к первому отечественному персональному компьютеру ДВК удалось подключить
чудо техники под названием ЦДР (до сих пор не знаю, как это расшифровывается),
позволяющее отображать на экране телевизора несколько тысяч пикселов в четырех
цветах, хотя иногда захаживал в Лабораторию Компьютерной Графики с векторными
устройствами и X-терминалами, и даже что-то Закон Мура тем временем делал свое (в данном случае не черное, а многоцветное) дело, и, кажется, в 1994 году я первый раз запустил на «четверке» ту самую систему, которую наблюдал пятью годами раньше на X-терминалах и графических станциях, стоивших каких-то немыслимых (что по тем временам, что сегодня) денег. Игры в самодельную графику с проприетарным софтом, конечно, продолжаются и сегодня, но в целом мир воссоединился, и особой нужды в таких играх, в общем-то, давно нет. Хотя - такова диалектика - именно эти игры (включая игры в буквальном смысле) породили спрос на дешевые устройства (прежде всего, графические акселераторы), которые и делают настоящую компьютерную графику доступной пользователю массовой x86-техники, даже дешевые «персоналки» - сопоставимыми с X-терминалами. А самые «фронтирные» из них успешно соперничают и с профессиональными графическими рабочими станциями начального и среднего уровня. X Window System - один из самых больших и успешных проектов в истории компьютерной техники - берет свое начало в 1984 году, когда разработчики двух систем компьютерной графики, претендующих на универсальность, - проект Athena (MIT) и W Windowing (Стэнфорд) - решили объединить свои усилия. С тех пор практически каждая компания, серьезно занимающаяся графикой, посчитала своим долгом внести какие-либо разработки в систему, формальным «хозяином» которой в 1987 году стал вновь созданный X Consortium (ныне X Open Group). С тех пор X прошел через одиннадцать основных релизов и множество версий, самой свежей из которых является X11R6 v 5.1. Дальнейшее изложение относится к свободно распространяемой реализации X для
x86, которая называется FreeX86, поддерживается одноименным Большинство нижесказанного, впрочем, справедливо для любой реализации X на любом оборудовании и под любой ОС, список которых можно найти на http://www.x.org/. Цветной сэндвич То, что пользователю, сидящему за монитором, представляется сплошной графической операционной средой, реализовано как многослойный сэндвич технологий, изображенный (в очень упрощенном виде) на рис. 1. Непосредственно с «железом» (видеосистемой, устройствами ввода и динамиком) работает X-сервер. Эта программа захватывает оборудование и предоставляет его возможности другим программам как ресурсы (собственно, именно поэтому она и называется сервером) по особому протоколу, который так и называется, X-протокол. Перечисленное оборудование в совокупности называется X-терминалом. (Аппаратным) X-терминалом называется и специализированный компьютер, на котором исполняется исключительно X-сервер. Здесь сразу видно отличие X Windows System от большинства самодельных систем
графики, используемых в проприетарных системах: взаимодействие X-сервера с его
многочисленной клиентурой происходит по Еще одним ресурсом, который предоставляет X-сервер, являются шрифты. Оперировать шрифтами он может самостоятельно либо с помощью другой программы, которая называется сервер шрифтов X и обеспечивает их масштабирование. Настройка X-сервера и сервера шрифтов - первая сложность, с которой обычно сталкиваются пользователи открытых систем для x86-машин, и это неудивительно, учитывая огромное разнообразие существующего для них оборудования (и национальные особенности ситуации с кодовыми таблицами в России). К счастью, программы установки современных дистрибутивов все увереннее распознают даже самые экзотические его комбинации, и большинство пользователей, установив систему, получают в свое распоряжение готовую графическую среду. Мы поступим иначе - будем разбираться с ней по слоям. X голышом Рис. 2 - порнографический (это не детская порнография - ведь X в этом году исполнилось 16), на нем изображена «голая» система X Window - то, с чем большинство пользователей никогда не сталкивается. Запустить ее обычно можно так: X. Мы видим традиционный серый экран с не менее традиционным курсором в виде буквы
X. Используя мышь или другое координатное устройство, курсор Воспользуемся последней возможностью, перейдем на консоль и запустим первое клиентское приложение: программу xterm (рис. 3). Экран X обрел более пристойный вид: на нем появилось окно, а в окне можно видеть интерфейс клиентского приложения. В данном случае интерфейс текстовый, а приложение - эмулятор терминала, на котором запущена диалоговая оболочка системы по умолчанию. С эмулятором можно делать все то же, что и с обычным терминалом: издавать команды, получать результат и запускать другие программы. Если программы текстовые (строчные или оконные), исполняться они будут в том же окне, а если графические (как и сам xterm) - в отдельных окнах. Запустим программу xclock (рис. 4). При ее запуске мы использовали несколько
опций, задающих геометрию (местоположение и размер) порождаемого окна,
цвет его фона и шрифта по умолчанию, толщину и цвет рамки. Эти (и некоторые
другие) опции типичны для программ, построенных на основе графической библиотеки
X Toolkit. Значения опций могут быть перекрыты самим запускающимся приложением,
кроме опции геометрии. Дело в том, что окно выделяется клиентскому приложению
при запуске, и все доступные ему ресурсы этим окном и ограничены - это свойство
X-протокола. И какую Запустив несколько экземпляров того же xterm (и почитав документацию), можно обнаружить, что и «голышом» X умеет не так мало. Например, оперирует буфером обмена текстом между приложениями и предоставляет текстовым приложениям такой ресурс, как полосу прокрутки (забавная полоска, скроллировать текст с помощью которой вверх или вниз можно, щелкая по ней разными кнопками мыши, - это наследие проекта Athena). Есть ли польза от системы, работающей с фиксированными окнами? Да, если вспомнить, что «универсальный десктоп» - не единственная сфера применения компьютера. Можно запустить при загрузке X и Netscape на весь экран и получить гипермедийный киоск по цене PC. А можно посадить за тот же Netscape оператора, который будет через него весь день «рулить» базу данных. Но наша сегодняшняя тема - «стол», поэтому пойдем дальше. Итак, основная работа
X-сервера - создавать окна и предоставлять клиентским приложениям возможности
работы в них. Для того чтобы работать с Окноводы Как же менеджер окон преодолевает указанное ограничение X-протокола? Никак - просто выделенным ему окном является весь экран. (На самом деле, менеджер окон - не единственная программа, способная работать с «корневым» окном; например, входящая в комплект поставки xsetroot позволяет установить цвет фона или поместить на него рисунок.) Менеджеров окон существует превеликое множество - под любой набор задач, которые может решать графическая многооконная система. Их так много, что выбрать какой-нибудь в качестве «типичного представителя семейства» затруднительно. Поэтому выберем один из самых развитых - Enlightenment. «Просвещение» создано Карстеном Хайцлером и Джеффом Харрисоном (Carsten Haitzler,
Geoff Harrison), и его текущая версия - 0.16.5. До недавнего времени Enlightenment
был «штатным» менеджером окон в среде GNOME (см. следующую статью), лишь недавно
уступив это место менее функциональной, но более шустрой «Рыбе-пиле» (Sawfish).
Он продолжает оставаться GNOME-совместимым, и многие пользователи этого популярного
десктоп-менеджера предпочитают его, Запустим «Просвещение» (рис. 5). Как резко изменилась картина! Первое, что мы видим, - это появившиеся вокруг окна нашего xterm «виджеты» - строка заголовка с кнопками и рамка. Все правильно - окно теперь можно перемещать по экрану, ухватив за заголовок, масштабировать, взяв за бок или за угол, максимизировать, минимизировать или закрыть, нажав соответствующую кнопку. Спрашивается, что еще можно делать с окном? Вопрос не праздный. Нажав на левую кнопку в заголовке, получаем неожиданно разнообразное меню (меню - это тоже «виджет») таких действий (рис. 6). Оказывается, его можно еще уничтожить (Annihilate), поднять/опустить (Raise/Lower), оттенить/растенить (Shade/Unshade), приклеить/отклеить (Stick/Unstick) и выполнить еще массу действий, для которых потребовались отдельные подменю! Набор этих действий зависит от конкретного менеджера окон (и Enlightenment - один из самых богатых возможностями), а то, какие из них выведены в строку заголовка отдельными кнопками, - вообще от его настройки. Собственно, управление окнами - основная функция оконного менеджера, и на этом
его функциональность Вы уже обратили внимание на то, что при запуске «Просвещения» на экране появилось еще одно окно. Это так называемый пейджер (pager), на рис. 8 он изображен крупным планом. На пейджере представлена миниатюрная копия экрана, обновляющаяся в режиме реального времени, причем, если подвести курсор к изображению отдельного окна, оно увеличивается и рядом высвечивается название приложения, запущенного в нем. Но почему экран занимает только четверть окна пейджера? Потому что оконный менеджер позволяет оперировать «виртуальным столом», по размеру превышающим физический экран, а пейджер - одно из средств перемещения физического экрана по рабочему столу. Enlightenment позволяет создавать до 64 экранов на рабочем столе. Отличительная особенность этого менеджера - в том, что он позволяет заводить одновременно более одного (точнее, до 32) рабочих столов, что в итоге дает 2048 экранов. Еще один важный компонент Enlightenment мы не увидели сразу: это меню настройки
самого менеджера, которое можно «достать», щелкнув правой кнопкой мыши на фоне
экрана (рис. 7). Порывшись в настройках, можно обнаружить, что вышесказанное
о способах оперирования с этим менеджером весьма условно, потому что Лишь один пример: сколько способов визуализировать перемещение окна вы знаете? Я до сих пор знал три, а разработчики «Просвещения» придумали целых шесть, включая фантастический «полупрозрачный». Настройки и расширения Enlightenment можно объединять в «темы» (themes) и обмениваться ими. Собственно, на этом функции оконного менеджера как такового и заканчиваются, а дальше Enlightenment вторгается во владения другого класса программ - менеджеров рабочего стола… Столоначальники …Что демонстрирует отсутствие резкой границы между ними. Существует два подхода
к тому, чтобы достроить оконную систему до полнофункциональной среды. Первый
- добавить в «графический сэндвич» Другой путь - «дотянуть» до полнофункциональной среды функциональность самого оконного менеджера, и им идет Enlightenment, не менее интересный AfterStep (который не влез в сегодняшнюю тему) и ряд других проектов. Что нам не хватает до полнофункциональной среды? Менеджера программ, утилит
и приложений. Так вот, в «Просвещении» есть и такая функциональность. На рис.
9 показано меню (точнее, иерархия меню и подменю), появляющееся при щелчке на
фоне левой Комментировать здесь особо нечего: пункты меню позволяют запустить множество различных приложений, причем, кроме независимо разработанных, и целую пачку «апплетов», поставляемых вместе с Enlightenment. Альтернативный способ запуска - через «панель» - встроен в некоторые темы «Просвещения». На рис. 10 и 11 представлена изящная выдвижная панель темы Arctic и монументальная конструкция из темы nIx. Откуда что берется Резонный вопрос: а откуда берутся такие ресурсы, как «виджеты» с их декором и способом поведения? Конечно, менеджер окон может содержать их в себе. Но такой подход не очень характерен для открытых систем, одним из принципов разработки которых является компонентность. Большинство развитых оконных менеджеров, менеджеров рабочего стола и «заточенных» под них приложений можно сгруппировать по библиотекам (toolkits), с опорой на которые они разработаны (возвращаемся к рис. 1). Сегодняшняя тема подготовлена в пользовательской, а не разработческой перспективе, поэтому в ней лишь упомянуты, но не описаны подробно, две библиотеки - Qt и GTK+, используемые средами K и GNOME соответственно.] |
|
![]() |
![]() |
2000-2008 г. Все авторские права соблюдены. |
![]() |
![]() |
![]() |
![]() |