Управители окон:

Закрома неисчерпаемы

Алексей Федорчук продолжает извлекать объекты из закромов истории оконных менеджеров, в подкрепление темы номера.

Вторая половина 90-х годов — период бурного развития оконных менеджеров: все ныне существующие их группы (за единственным исключением, о котором я упомяну в конце статьи) возникли в это время. В том числе и самые яркие, по моему мнению, представители семейства.

По следам легенды

Кто же не помнит старика Крупского? Пардон, старика NeXT’a? Но… наступил угар НЭПа, и имена героев информационной революции постепенно забываются. Так что как раз NeXT в качестве аппаратной архитектуры и NeXTStep в роли ОС для нее ныне вспоминают не часто. А ведь эта платформа стала легендой еще при жизни… О судьбе аппаратной составляющей платформы я скажу пару слов во врезке. Здесь же речь пойдет о продолжении дела программной составляющей — ОС NeXTStep. Каковое имело место быть отнюдь не в проприетарной OpenStep — совместном детище компаний NeXT и Solaris: ей суждено было стать жертвой аборта на ранней стадии беременности. И даже не в MacOS X — несмотря на общее происхождение, родства на генетическом уровне между ними оказалось не так уж много. А о продолжателях дела старика NeXT’a из мира свободного ПО.

Интерфейс ОС NeXTStep отличался, с одной стороны, функциональностью, с другой — элегантностью, так с тех пор и не превзойденной (на мой взгляд). И потому он послужил сначала образцом для подражания, породив целую линию оконных менеджеров. Первым из них стал AfterStep (в разработке с 1996 года). Он был основан на коде FVWM, но внешний вид его привели в соответствие с таковым от NeXTStep. Казалось бы, процедура, аналогичная проделанной ранее с fvwm95 (см. LXF173) — однако результат был несопоставим. И хотя AfterStep и не снискал большой популярности, он развивается до сих пор, и вокруг него сложилось небольшое, но преданное сообщество.

Если AfterStep имел в своей основе код FVWM, то второй последователь NeXTStep, WindowMaker, разрабатывался «с нуля» Альфредо Кохимой (Alfredo Kojima), начиная с 1997 года. И первоначально этот оконный менеджер предназначался для кросс-платформенной среды GNUstep — попытке свободного воспроизведения OpenStep, того самого нерожденного дитяти от союза NeXT и Sun, которое поминалось выше.

Сама среда GNUstep угодила в долгий ящик — время от времени появлялись только ее реализации на ядре Linux (что, впрочем, было свойственно всем амбициозным проектам, до которых антилопа GNU дотягивалась своими копытами). А WindowMaker же, как оконный менеджер для Иксов, вследствие своих несомненных достоинств (элегантность и, при некоторой привычке, удобство интерфейса, быстрота, нетребовательность к ресурсам) быстро завоевал заслуженную популярность.

Не последнюю роль в распространении WindowMaker’a сыграло то, что изначально он включал утилиту настройки Wprefs, работавшую в графическом режиме: необходимости в ручной правке конфигов больше не было. Хотя и запрета на нее тоже не налагалось. Кроме того, для него был разработан и комплекс служебных программ, что знаменовало первый шаг в направлении интегрированных десктопов (правда, дальнейших шагов в эту сторону не последовало — WindowMaker так и остался менеджером окон).

В нынешнем тысячелетии WindowMaker несколько захирел. В том числе и потому, что, когда все прогрессивное человечество начало в массовом порядке переходить на UTF8, оставался верен восьмибитным кодировкам. Правда, в середине нулевых годов вышел релиз 0.95.0 с поддержкой юникода — но затем долгие годы о WindowMaker’a не было слышно ничего. По традиции он входил в штатный набор графических сред ряда дистрибутивов, присутствовал в их репозиториях, официальных или дополнительных, но о былой популярности говорить не приходилось.

Казалось, что WindowMaker обречен на тихую и незаметную кончину. Как вдруг случилось чудо: в январе 2012 года новой командой разработчиков было объявлено о реанимации проекта и выходе нового релиза — 0.95.1. А вслед за тем очередные вер-сии этого оконного менеджера начали выходить регулярно — последняя на сегодняшний день (0.95.4) датируется январем 2013.

Начинание разработчиков этого оконного менеджера получило поддержку со стороны майнтайнеров некоторых дистрибутивов. И в начале июня текущего года свет увидел LiveCD на базе Debian’a, в котором WindowMaker выступает в качестве рабочего окружения.

А в период стагнации WindowMaker оказал несомненное влияние на две самых модерновых рабочих среды современности: режьте меня на куски, но идея больших объемных кнопок на панели запуска приложений вдоль боковины экрана в Unity и Gnome Shell ведет свое начало от него. Хотя разработчики обеих сред не любят говорить об этом вслух. И, дабы окончательно обрубить концы преемственности, переместили эту панель справа (где она имела место быть в WindowMaker’a по умолчанию) налево.

Линия боксов

В основе интерфейса всех оконных менеджеров, о которых говорилось в предыдущей статье, лежал какой-нибудь прототип, «родной» (как twm) или пришедший из «другого мира» (Windows, NeXTStep). Однако в их семействе имеется линия абсолютно оригинальная — по крайней мере, прообразов для нее я не видел никогда и нигде. Это — линия так называемых *kbox’ов.

Прародитель семейства, Blackbox, был разработан Брэдли Хьюгсом [Bradley Hughes] в 1997 году как своего рода неявный ответ на IceWM — еще легче с точки зрения потребления ресурсов, еще минималистичнее по своему интерфейсу, еще проще в настройке и использовании, да еще не несущий никаких следов чужеродного воздействия. Иными словами — воплощение True Unix GUI в превосходной степени. И надо сказать, что поставленную самому себе задачу Брэдли выполнил с блеском — предельно простой и строгий дизайн его решения сводится к двум элементам: узенькой управляющей панели, служащей для переключения рабочих столов и запущенных приложений, и рабочего пространства, с которого щелчком правой кнопки мыши вызывается контекстное меню, позволяющее запускать приложения и выполнять первичную настройку Blackbox’a. Более тонкая настройка выполняется путем коррекции конфигурационных файлов.

Blackbox быстро обрел популярность, и как следствие стал обрастать дополнениями в виде многочисленных тем рабочего стола и элементов интерфейса (например, средства вывода запускающих пиктограмм на рабочий стол). Появилось и средство собственной настройки — bbconf. Однако в самом Blackbox, после первого периода «бури и натиска», фактически ничего не менялось, и все по той же причине: что-то кардинально улучшить без смены парадигмы в нем было уже невозможно. А смена парадигмы приводила уже к тому, что он переставал быть самим собой.

В результате в первой половине нулевых годов развитие этого оконного менеджера прекратилось — последняя его версия (0.70.1) на официальном сайте датируется ноябрем 2005 года. Однако сам по себе он не умер: майнтайнеры большинства популярных дистрибутивов держат его в своих официальных репозиториях, заодно поддерживая совместимость его с новыми версиями библиотек (благо зависимостей у Blackbox’a не мало, а очень мало).

Продолжал развиваться Blackbox и другим образом — в виде своих потомков. Из них до сего дня дожили два: Fluxbox и OpenBox. Оба они в целом сохранили минималистический интерфейс родителя, но обогатили его рядом новшеств.

Для Fluxbox’a (чистого клона Blackbox’a), возникшего на рубеже тысячелетий, главной из них была возможность объединять совместно используемые приложения (например, терминал, текстовый редактор и браузер) в группы «по интересам». И перемещаться внутри них с помощью закладок — уже настоящих табов, а не тех их прототипов, что были в twm. Кстати, особенность эта до сих пор остается уникальной не только для оконных менеджеров, но и для десктопов.

Появившийся несколько позже (в 2002 году) OpenBox также поначалу был клоном Blackbox’a, то есть основывался на его кодовой базе. Однако затем он был переписан на чистом C (Blackbox и Fluxbox написаны на C++), чем приобрел самобытность, хотя и сохранил минимализм интерфейса предтечи. Однако главная составляющая его самобытности — это графическое средство конфигурирования ObConf. Оно обеспечило ему место оконного менеджера в рабочей среде LXDE, у которой с собственными средствами настройки была (и сохраняется до сих пор) некоторая напряженка. Но об этом — в следующих статьях.

И еще минималистичней…

Казалось бы, интерфейс минималистичней, чем у Blackbox’a, придумать трудно. Но предела совершенству нет ни в каком направлении — ни в усложнении, ни в упрощении. Что мы сейчас и проиллюстрируем.

Был некогда такой оконный менеджер — wm2 (что расшифровывалось просто: Window Manager 2). Разработанный Крисом Каннамом [Chris Cannam] в 1996 году, он отличался даже не простотой, а, я бы сказал, простецкостью. Ибо обеспечивал только перемещение окон, изменение их размера, скрытие и закрытие. Никаких других функций у него не было — ни виртуальных деск-топов, ни средств запуска приложений, ни иконок, ни средств конфигурирования. И потому вид его был предопределен изначально. В частности, фирменной его особенностью была вертикальная ориентация строки заголовка. Вероятно, этих возможностей (или, скорее, невозможностей) автору хватало. А вот Биллу Спитзаку [Bill Spitzak] — нет, хотя ему также были близки идеи минимализма и нравилась вертикальная ориентация строки заголовка. И потому он добавил в wm2 необходимые функции — расширенные средства управления окнами, средство запуска приложений из контекстного меню рабочего стола, поддержку виртуальных десктопов в неограниченном количестве. В результате чего получился FLWM (Fast Light Window Manager).

Появилось в FLWM и средство настройки контекстного меню запуска программ, не требующее даже правки конфигурационных файлов. Достаточно было в каталоге ~/.wmx/ создать подкаталоги, соответствующие пунктам меню любой желаемой структуры (до десяти уровней вложенности). И поместить в них символические ссылки на исполняемые файлы необходимых приложений. После чего в контекстном меню появляются новые пункты.

Последняя авторская версия FLWM (1.02) датируется 2006 го-дом. Однако заложенные в нем идеи минимализма развил и усовершенствовал Роберт Шинглдекер [Robert Shingledecker], разработчик самого минималистичного дистрибутива Linux — Tiny Core. Именно в таком виде FLWM входит в репозитории ряда дистрибутивов (например, openSUSE и Ubuntu).

Управители тайлингом

Как я уже сказал, «период бури и натиска» в развитии оконных менеджеров пришелся на вторую половину 1990-х годов. И на рубеже тысячелетий стало казаться, что все идеи в этом направлении исчерпаны. Идеи разумные были реализованы в удачных оконных менеджерах, получивших распространение и достиг-шихтой стадии совершенства, когда «хорошее улучшать — только портить». А оконные менеджеры, основанные на идеях неразумных или просто неудачные, тихо сошли со сцены, и даже память о них затерлась. К тому же массовый приток новых пользователей из мира Windows (потому что больше им просто неоткуда было браться) вызвал снижение интереса к оконным менеджерам вообще — наступала эра интегрированных графических сред, выглядевших для мигрантов-«подоконников» более привычно. Да и линуксоиды первых призывов, вдоволь наигравшись с редактированием конфигов и rc-файлов, все чаще причаливали в тихой десктопной гавани. А оконные менеджеры все больше становились инструментом энтузиастов.

Однако энтузиасты, как известно, потому так и называются, что ко всему относятся с энтузиазмом. В том числе и к интерфейсам. Им стало скучно в очередной раз реконфигурировать box’bi и FLWM ‘bi. И в первой половине нулевых годов они придумали новую парадигму управления окнами — тайлинг, реализовав ее к их середине в виде многочисленных тайловых (или фреймовых) оконных менеджеров.

В основе тайловых менеджеров лежит та же идея, что и у консольной утилиты screen: расщепление на ряд независимых областей (фреймов), подобное покрытию пола кафельной плиткой [tiling], в каждой из которых запускается какое-либо приложение. Собственно, к программам этой группы понятие «оконный менеджер» применимо достаточно условно: они обеспечивают управление не столько окнами, сколько теми самыми плитками — областями экрана, в которых эти окна открываются. Каковое может быть статическим, с жестко определенными размерами плиток, и динамическим, при котором размеры плиток изменяются при масштабировании окон запущенных в них приложений.

Распространение больших широкоформатных LCD-мониторов сделало идею тайлинга очень актуальной, и тайловые менеджеры получили широкое распространение. А элементы тайлинга были задействованы и в некоторых интегрированных средах (Xfce; в меньшей мере в KDE). Однако я тайловых менеджеров практически не использовал — для моих задач больше походит принцип «один десктоп — одно окно». Так что описать их историю не могу; надеюсь, что кто-нибудь из знатоков и любителей тайловых менеджеров восполнит пробел в моем историческом обзоре.

Заключение

Подводя итог истории оконных менеджеров, процитирую великого русского поэта А.К. Толстого:

«К чему твоя баллада?» —

Иная спросит дева.

— О жизнь моя, о лада,

Ей-ей, не для припева!

Так вот, и я сочинил обе заметки на заданную тему, дабы развеять одно распространенное заблуждение: будто разработчики графических интерфейсов Иксов только и делали, что заимствовали и копировали решения из Windows и ОС для Macintosh’a (мало кто нынче помнит, что до появления Mac OS X они назывались очень просто — System с добавлением номера версии).

Дело обстояло как раз наоборот: если не считать общих корней GUI, произраставших из Xerox PARC, все остальные атрибуты современных графических интерфейсов, представляющиеся сейчас самоочевидными, впервые получили распространение именно в оконных менеджерах для X Window System. Это и активное использование трех кнопок мыши, и множественные виртуальные рабочие столы, и виртуальное разрешение экрана, и управляющие панели, и контекстные меню, и многое другое. В послужной список Windows можно вписать только сомнительную честь изобретения кнопки Пуск. А к вящей славе Mac’овских систем всегда служило не создание новых парадигм, а умелая и успешная реализация существующих.

Понравилась статья? Поделиться с друзьями:
SQL - 30 | 1,040 сек. | 8.65 МБ