Есть ли польза от системы, работающей с фиксированными окнами? Да, если вспомнить, что «универсальный десктоп» — не единственная сфера применения компьютера. Можно запустить при загрузке «Икс» и браузер на весь экран и получить гипермедийный киоск по цене персонального компьютера. А можно посадить за тот же браузер оператора, который будет через него весь день «рулить» базу данных.
Но мы пойдем дальше. Итак, основная работа Икс-сервера — создавать окна и предоставлять клиентским приложениям возможности работы в них. Для того, чтобы работать с окнами, нужна другая программа, которая так и называется — менеджер окон (window manager).
Как же менеджер окон преодолевает указанное ограничение X-протокола? Никак — просто выделенным ему окном является весь экран. (На самом деле, менеджер окон — не единственная программа, способная работать с «корневым» окном; например, входящая в комплект поставки «xsetroot» позволяет установить цвет фона или поместить на него рисунок.)
Менеджеров окон существует превеликое множество — под любой набор задач, которые может решать графическая многооконная система. Их настолько много, что выбрать какой-нибудь в качестве «типичного представителя семейства» затруднительно. Поэтому выберем один из самых развитых — Enlightenment.
«Просвещение» (www.Enlightenment.org) создано Карстеном Хайцлером и Джеффом Харрисоном (Carsten Haitzler, Geoff Harrison) и его текущая версия — 0.16.5. До 2000 г. он был «штатным» менеджером окон в популярной среде «Гном» (см. раздел 2.17), затем уступив это место менее функциональной, но более быстрой «Рыбе-пиле» (Sawfish). Он продолжает оставаться «Гном»-совместимым, и многие пользователи этого популярного десктоп-менеджера предпочитают его, хотя и без «Гном» у Enlightenment поклонников хватает.
Рис. 2-4
Запустим «Просвещение» (Рис. 2-4). Как резко изменилась картина!
Первое, что мы видим — это появившиеся вокруг окна нашего xterm «виджеты» (элементы окон) — строка заголовка с кнопками и рамка. Окно теперь можно перемещать по экрану, «ухватив» за заголовок, масштабировать, «взяв» за бок или за угол, максимизировать, минимизировать или закрыть, нажав соответствующую кнопку. Спрашивается, что еще можно делать с окном?
Рис. 2-5
Вопрос не праздный. Нажав на левую кнопку в заголовке, получаем неожиданно разнообразное меню (меню — это тоже «виджет») таких действий (Рис. 2-5). Оказывается, его можно еще уничтожить (Annihilate), поднять/опустить (Raise/Lower), оттенить/растенить (Shade/Unshade) приклеить/отклеить (Stick/Unstick) и выполнить еще массу действий, для которых потребовались отдельные меню! Набор этих действий зависит от конкретного менеджера окон (и Enlightenment — один из самых богатых возможностями), а то, какие из них выведены в строку заголовка отдельными кнопками — вообще от его настройки.
Собственно, управление окнами — основная функция оконного менеджера, и на этом его функциональность может и заканчиваться. Однако большинство из них выполняют по крайней мере еще одну функцию.
Рис. 2-6
Вы уже обратили внимание на то, что при запуске «Просвещения» на экране появилось еще одно окно. Это так называемый пейджер (pager), на Рис. 2-6 он изображен крупным планом. На пейджере представлена миниатюрная копия экрана, обновляющаяся в режиме реального времени, причем, если подвести курсор к изображению отдельного окна, оно увеличивается и рядом высвечивается название приложения, запущенного в нем. Но почему экран занимает только четверть окна пейджера? Потому что оконный менеджер позволяет оперировать «виртуальным столом, по размеру превышающим физический экран, а пейджер — одно из средств перемещения физического экрана по рабочему столу. Enlightenment позволяет создавать до 64 экранов на рабочем столе.
Рис. 2-7
Еще один важный компонент Enlightenment мы не увидели сразу: это меню настройки самого менеджера, которое можно «достать», щелкнув правой кнопкой мыши на фоне экрана (Рис. 2-7). Порывшись в настройках, можно обнаружить, что вышесказанное о способах оперирования с этим менеджером весьма условно, потому что поменять можно буквально все, от декора виджетов до количества и функций элементов оформления окон и их реакции на различные действия.
Лишь один пример: сколько способов визуализировать перемещение окна вы знаете? Разработчики «Просвещения» придумали целых шесть, включая фантастический «полупрозрачный». Настройки и расширения Enlightenment можно объединять в «темы» (themes) и обмениваться ими.
Собственно, на этом функции оконного менеджера как такового и заканчиваются, а дальше Enlightenment вторгается во владения другого класса программ — менеджеров рабочего стола...
...Что демонстрирует отсутствие резкой границы между ними. Существует два подхода к тому, чтобы достроить оконную систему до полнофункциональной среды. Первый — добавить в «графический сэндвич» еще один слой — менеджер рабочего стола — работающий «поверх» оконного менеджера и использующий функциональность последнего. Этим путем идут команды разработчиков «ГНОМ» (см. раздел 2.17) и «КДЕ» (см. раздел 2.18).
Другой путь — «дотянуть» до полнофункциональной среды функциональность самого оконного менеджера, и им идет «Enlightenment» и ряд других проектов.
Чего нам не хватает до полнофункциональной среды? Менеджера программ и утилит. Так вот, в «Просвещении» есть и такая функциональность, доступная (по умолчанию) по щелчку на фоне левой кнопкой.
Комментировать здесь особо нечего: пункты меню позволяют запустить множество различных приложений, причем, кроме независимо разработанных, и целую пачку «эпплетов», поставляемых вместе с «Enlightenment». Альтернативный способ запуска — через «панель» — встроен в некоторые темы «Просвещения».
Откуда берутся такие ресурсы, как «виджеты» с их декором и способом поведения? Конечно, менеджер окон может содержать их в себе. Но такой подход не очень характерен для открытых систем, одним из принципов разработки которых является компонентность. Большинство развитых оконных менеджеров, менеджеров рабочего стола и «заточенных» под них приложений можно сгруппировать по библиотекам (toolkits), с опорой на которые они разработаны.
2.6 Триумф интерфейса над пользователем?
Косметических улучшений за тридцать лет существования парадигмы WIMP была придумана масса, а вот более или менее серьезных, при внимательном анализе, обнаруживается только два: интеграция звука (и превращение графической (визуальной) среды в сенсуальную) и начало эксплуатации концепции гиперссылок, в терминах которых можно переформулировать почти весь интерфейс.
Фредерик Брукс еще в 1995 г., обсуждая основные процессы, произошедшие в программной отрасли за 20 предшествовавших лет, назвал в числе «наиболее впечатляющих явлений» «триумф интерфейса WIMP»[77]. В этом ставшем классическим четырехстраничном анализе (всем, интересующимся темой, крайне рекомендуется прочитать эти четыре страницы, а заодно — и всю книгу), Брукс:
производит декомпозицию самой идеи («диалог» с системой: объекты-«существительные» и действия-«глаголы»),
выделяет факторы, способствовавшие ее «триумфу» («концептуальная целостность через метафору» «рабочего стола»; эквивалентность клавиатурных команд пунктам меню, обеспечивающая постепенный переход от новичка к опытному пользователю; навязывание архитектуры через средства разработки),
называет ограничения метафоры «рабочего стола» («проблема двух курсоров»), а также
предрекает устаревание WIMP при внедрении речевого интерфейса («WIMP через поколение станет достоянием истории. Указание курсором останется способом задания существительных при управлении нашими компьютерами. Для выражения глаголов станет использоваться речь»).
Прошло еще пять лет, и мы можем отметить, что:
Проф. Брукс не заметил решения «проблемы двух курсоров» (а заодно — и непротиворечивой интеграции командной строки в графико-интерфейсное окружение) в конце восьмидесятых в Norton Commander (и сонме последователей этой замечательной программы на разных платформах (обзор см. в[78]. Проф. Безруков предложил для реализованного в Norton Commander интерфейса термин «ортодоксальный менеджер файлов» (OFM));
WIMP не думает устаревать, и скорее сам абсорбирует новые интерфейсные возможности (включая распознавание речи), чем будет вытеснен ими;
и, наконец, самое серьезное — это то, что «триумф WIMP» на сегодня выглядит не то чтобы менее бесспорным, а менее однозначным, все более походя на пресловутое «триумфальное шествие советской власти» по обессиленным Первой мировой войной частям Российской империи и ее окрестностей. Во многих прикладных областях попытки внедрения WIMP стали скорее частью проблемы пользовательского интерфейса, чем частью ее решения.
«Сплошной» же WIMP-среды и вовсе нет нигде, кроме встроенных/специализированных систем: в любом окружении, претендующем даже не на универсальность, а просто на широкую сферу применения, элементы WIMP сочетаются с элементами другой интерфейсной модели — командно-строчной — иногда более органично (OFM, AppleScript и т.п.), а чаще эклектично, противоречиво и с фатальным для производительности исходом (фрагменты «рваной» командной строки в «диалоговых окнах», разнообразные Wizards и «окна установки предпочтений»).