- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF139:WMEvolution
Материал из Linuxformat.
Содержание |
Эволюция рабочих столов
- Джоно Бэкон изучает происхождение видов… рабочих столов.
В 1998 году, когда я начал пользоваться ОС Linux, изящества тут было мало. Для установки вы скармливали компьютеру штук 40 дискет, непрерывно молясь, чтобы среди них не затесалась битая и не пришлось бы начинать все заново. После длительного ожидания вы обычно получали не особо интуитивный интерфейс типа
darkstar login: _
В те времена доминирующей ОС была Windows 95; Windows 98 еще раскручивалась, а приключения в Linux в стиле «Недетских игр» не прельщали поколение пользователей, выросших на GUI. [Тут автор сам себе противоречит - откуда могло взяться "поколение пользователей, выросших на GUI" в 98м году?]]
Когда наши бородатые друзья из мира ядра Linux сообразили, как добиться работы графических карт, все больше усилий стали прилагать к воссозданию повсемстно знакомой графической среды. Эта работа началась с портирования на Linux среды X – ПО для отрисовки изображений на экране, но одного этого было недостаточно. Чтобы получить реально полезный GUI, необходим был еще и хороший оконный менеджер.
В отличие от мира Windows, среда X позволяла запускать множество оконных менеджеров, и их появилась прорва – от чудаческих до чудесных. Одни были простыми, другие – сложными, часть пыталась эмулировать интерфейс Windows, а часть была откровенно безумной. Но в итоге этого взрыва творческой активности популярность обрели две графические среды: KDE и Gnome.
Хотя и KDE, и Gnome предоставляли удобную для пользователей полноценную функциональную среду, это были разные вотчины, с крайне узкой «областью пересечения». Оба решали одни и те же проблемы – например, поиск способа запуска файлов или управления шрифтами – но делали это каждый по-своему.
Требовались перемены. Сообщество росло, и когда два разработчика решали одну и ту же проблему двумя разными способами, это было сущим безумием. К счастью, ситуация подошла к резкому улучшению.
Унификация рабочего стола
На фоне нарастания болтовни про взаимодействие рабочих столов был анонсирован проект freedesktop.org – в качестве независимой от среды зоны для разработки ПО, способного поладить с любым рабочим столом. Сайт проекта предоставил посетителям wiki-страницу, хостинг для кода, дискуссионные почтовые списки, IRC-каналы и многое другое. И этот проект оказал колоссальное влияние на развитие рабочих столов.
Было создано огромное количество программ – часть их быстро достигла уровня зрелости и решала реальные проблемы, а некоторые начатые проекты так и не завершились. Но независимо от выживаемости проектов, сайт http://freedesktop.org нес в сообщество важнейший посыл: рабочие столы должны как можно больше сотрудничать. Этот посыл был воспринят большинством, и эволюция рабочих столов продолжилась.
Важнейшим программным компонентом, созданным в рамках проекта freedesktop.org, явилась унифицированная система обмена сообщениями. На том этапе главной проблемой разработчиков рабочих столов было обеспечение взаимосвязи приложений: web-браузер должен был общаться с системной связкой ключей [system keyring], сетевой демон – со значком на панели, и т. д.
В KDE попытались решить эту проблему с помощью системы, названной DCOP. Она предоставляла приложениям наглядный способ обмена сообщениями. Хорошо работая в KDE, эта система, к сожалению, не решала более широкой проблемы обмена сообщениями между множеством рабочих столов. И тогда появился проект D-BUS.
В двух словах, D-BUS – это эквивалент DCOP, переносимый между рабочими средами. Он предоставляет механизм, благодаря которому приложения взаимодействуют друг с другом через общую шину, используя общий язык. Проект D-BUS лихорадочно развивался, пока не добился соответствия стандарту freedesktop.org, после чего данная технология была встроена и в KDE, и в Gnome. Это был огромный скачок в развитии рабочих столов, который вывел их на новую ступень эволюции.
Отделка рабочего стола
По мере трудов над совместимостью рабочих столов мы наблюдали колоссальные изменения рабочего стола Linux. Многие из болезненных проблем прошлого были решены – устройства USB автоматически распознаются при подключении, связь с беспроводными сетями устанавливается одним щелчком мыши, печатать теперь легче легкого, простой стала установка ПО; дела явно шли к лучшему. Мы наконец-то зашагали в ногу со временем, и мы обладали тем, чего не было у конкурентов: глобальным сообществом сотрудников.
В мире Ubuntu мы изо всех сил старались быть на переднем крае доставки этих инноваций пользователям. Мы брали свободное ПО и интегрировали его в Ubuntu; нашей целью было помочь конечным потребителям решить их повседневные проблемы, будь то воспроизведение музыки, подключение к Internet или что-то другое.
В 2008 году Марк Шаттлворт [Mark Shuttleworth], основатель Ubuntu, пылая решимостью внедрять в Ubuntu инновации, основал проект Ayatana. Идея его была проста: набрать команду квалифицированных дизайнеров и инженеров, чтобы улучшить и расширить пользовательский интерфейс, обеспечив высокое качество дизайна.
Этот подход был нов для всех: для самого Марка, для компании (Canonical) и для команды Ubuntu. У нас имелся обширный опыт по интеграции и поставке ПО, но эта новая инициатива, с упором на дизайн, была «терра инкогнита».
Ayatana
Под Ayatana компания Canonical наняла большую команду дизайнеров. Ее члены имели самое разнообразное прошлое: кто-то разрабатывал бренды, кто-то – продукты; кто-то занимался графическим дизайном или дизайном интерфейса, и т. д. «Плавильным котлом индивидуальностей» назвать ее было бы мало; многие впервые встретились с открытым кодом; но у всех вызывала энтузиазм идея подкрепить отличный дизайн поддержкой сообщества.
Первый проект этой команды был назван Notify OSD; он по-новому обошелся со всплывающими окнами уведомлений, знакомыми пользователям Ubuntu. Годами мы терпели эти надоедливые желтые пузыри, всплывающие в правом верхнем углу рабочего стола Gnome каждый раз, когда какому-либо приложению приспичивало что-то поведать пользователю.
Проект Notify OSD переосмыслил эту базовую концепцию. Теперь уведомления приобрели более привлекательный вид прозрачного черного окна. Вместо закрытия уведомления щелчком мыши теперь достаточно задержать над ним курсор, чтобы оно выцвело, дав вам возможность взаимодействовать с приложением под ним. Такой дизайн обосновывается тем, что всплывающие уведомления должны предоставлять пользователю информацию ненавязчивым образом.
После включения первой версии Notify OSD в Ubuntu разработчики KDE тоже захотели применить эту технологию. К счастью, команда Ayatana создала спецификацию Notify OSD с тем, чтобы она могла прилагаться к различным средам рабочего стола, и разработчикам Kubuntu осталось только сделать GUI более органичным в KDE. Технология Notify OSD и здесь была принята благожелательно, как умное усовершенствование рабочего стола.
Индикаторы
Команда Ayatana не ограничилась одними всплывающими уведомлениями. Они нацелились на улучшение всей области уведомлений системы и приложений – области, которая на рабочем столе Linux являлась чем-то вроде помойки.
Проблем с этой областью хватало. Во-первых, в ней обычно сидело несколько значков уведомлений от приложений, использовавших ее, и нельзя было одним щелчком пробраться к нужному значку – каждый требовал отдельного щелчка мышью, чтобы им пользоваться. Кроме того, интерфейсы этих значков часто были разномастными. Одни имели меню левого щелчка, другие, наоборот, реагировали на правую кнопку мыши; или имели экзотические виджеты и прочие странности.
Значки в области уведомлений были такими же, как значки запуска приложений – как правило, полноцветные – и в разных темах оформления рабочего стола смотрелись плоховато. Например, при темной теме пользователю обычно хочется, чтобы значки в области уведомлений были однотонными, а программа запуска приложений сохраняла бы обычные яркие значки.
Все это создавало проблемы для пользователей с ограниченными возможностями и слабовидящих, и затрудняло навигацию по области уведомлений с помощью клавиатуры.
Команда Ayatana задумала решить эти проблемы независимо от рабочего стола. Для этого они построили свою работу на основе спецификации системных уведомлений [System Notifier Specification], созданной и применяемой в рамках проекта KDE, и разработали новый интерфейс прикладного программирования [API], через который разработчики могли бы поместить значок в область уведомлений для приложений Gnome.
Эта технология имела ряд преимуществ, и в том числе дала возможность щелкнуть мышью по любому из значков в панели и после этого прокручивать в области уведомлений все значки с выпадающими меню (по аналогии с прокруткой мышью меню приложений). Вдобавок приложения смогли устанавливать в области уведомлений отдельные значки, и стало реальным сделать их одноцветными, отведя полноцветный вариант на запуск приложений.
Меню области уведомлений стали более согласованными. Исчезла неразбериха меню, выводимых то левой, то правой кнопкой мыши; принято только нажатие левой кнопки, по которому появляются стандартные элементы, флажки и переключатели. В итоге работа пользователей серьезно упростилась и стала более удобной.
Был упрощен доступ пользователей буквально к всем опциям, а функциями, доступными через область уведомлений, теперь можно управлять с клавиатуры. Это сильно облегчает жизнь пользователей с физическими недостатками.
Когда новая технология была достаточно проработана, ее включили в очередной релиз Ubuntu, и пользователям она понравилась. Индикаторы полностью открыты и доступны через API для таких языков программирования, как C, Python и Mono, так что разработчики приложений получили возможность порезвиться в новой технологии, благодаря чему она была адаптирована многими приложениями, реализовавшими ее поддержку.
С точки зрения разработок, независимых от рабочего стола, особенно интересно то, что данная технология основана на стандартной переносимой спецификации KDE, и теперь приложения KDE, работающие в среде Gnome, получают меню, визуализируемые инструментарием GTK, с «родными» значками Gnome. То же справедливо и для приложений Gnome, работающих в KDE: в данном случае визуализацию выполняет Qt. Таким образом, приложения, изначально разработанные для одной среды, не выглядят чужеродными в другой.
Системные индикаторы
Еще один аспект новой технологии – концепция системных индикаторов: значки уведомлений, группирующих определенный тип контента (например, сообщения) или системную информацию (например, об уровне заряда батареи, питании и звуке).
Здесь ключевой технологией является меню сообщений – небольшой значок в форме конверта, щелчок по которому позволяет вам разом увидеть всю полученную входящую информацию. Приложения могут собирать здесь все: вновь полученные письма, сообщения из социальных сетей или чатов, и многое другое. Опять-таки благодаря тому, что спецификация поддерживает множество рабочих столов, помещать информационное содержимое в данное меню может любое приложение, и многие проекты включают поддержку Zimbra, Gmail и прочего.
В Ayatana созданы и другие системные индикаторы. Хороший пример – меню звука, позволяющее не только настроить громкость воспроизведения вашей звуковой картой, но и увидеть, какой музыкальный номер вы сейчас слушаете, а также пропустить при прослушке отдельные номера. Это удобно, потому что многие предпочитают слушать музыку в случайном порядке, и им незачем взаимодействовать с музыкальным плейером иначе, чем задавая пропуск отдельных дорожек. Благодаря этой функции можно скрыть свой плейер и пользоваться для пропуска треков только звуковым индикатором.
Меню приложений
Последнее, что касается индикаторов, которыми занимается команда Ayatana – то, что основное меню приложений тоже использует эту спецификацию. Здесь сильное влияние оказал мир нетбуков. На нетбуках и других устройствах с небольшим форм-фактором вертикальное пространство ценится особо, и размещение меню приложений на верхней панели экономит пространство. Эта концепция развивалась в рамках работ над Unity, новым интерфейсом для нетбуков, более подробно описанным во врезке «Unity на настольном компьютере».
Была разработана технология меню приложений с индикацией, применимая практически ко всем приложениям: ее преимуществами могут воспользоваться приложения KDE и Gnome, основанные на GTK и Qt, без внесения каких-либо изменений в само приложение. Следовательно, при запуске приложения при включенных новых индикаторах меню приложений меню приложения появится на панели и будет работать точно таким же образом.
Как и значки индикатора уведомлений, эта технология тоже переносима между рабочими столами: запуск приложения KDE в среде Gnome означает, что меню приложения будут визуализироваться в «родные» виджеты и значки GTK, и наоборот. Разве не чудесно запустить KWord в среде Gnome и увидеть, как все меню приложения отобразятся в виде «родных» виджетов? И снова, приложения, разработанные для других рабочих столов, будут выглядеть более естественными, а также будут удобнее в использовании.
За последние три года команда Ayatana набрала силу, попутно получив и ряд важных уроков. При запуске проекта Notify OSD дефицит взаимодействия между дизайнерами Canonical и сообществом ощущался очень серьезно, и это вызывало понятное раздражение членов сообщества. Однако урок был усвоен: теперь новые технологии не только предварительно обсуждаются с сообществом, но и доступ к работающему коду предоставляется сразу по мере выпуска. Например, в начале работы над индикатором приложений рабочий код был предоставлен в течение нескольких недель, чтобы сообщество могло поэкспериментировать с ним, исследовать его и внести свой вклад в его улучшение и исправление ошибок.
Повышение прозрачности наиболее заметно проявляется в поддержке приложений. Разработчики ряда приложений встроили в свои проекты поддержку индикаторов приложений и Notify OSD, и все больше приложений обзаводится данными функциями, поскольку Ubuntu предоставляет также и самое технологию.
Перспективы
Развитие рабочего стола Linux прошло долгий путь. Еще вчера казалось, что уже наличие графического рабочего стола является важнейшим из новаций Linux, а такие роскоши, как согласованные пользовательские интерфейсы, огромное удобство использования и быстрый и легкий доступ к устройствам и приложениям выглядели целью, в обозримом будущем недостижимой. Однако сообщество воспламенилось идеей создания удобной для всех рабочей среды, и мы наслаждаемся этими преимуществами сегодня.
Достигнутый прогресс велик, но будущее обещает еще больший потенциал. Победное шествие Linux уже не остановить, и, в отличие от 1998 года, у нас есть обширное портфолио технологий, способных украсить жизни большинства пользователей компьютеров по всему миру. Под прицелом Linux остается широкий диапазон оборудования: ноутбуки, настольные компьютеры, нетбуки, планшеты, мобильные телефоны и многое другое. Мир нам открыт, и кто знает, как ОС Linux, движимая мощью сообщества, будет выглядеть году этак в 2018?
Unity на настольном компьютере
Технологии, разработанные командой Ayatana, дополняют рабочие столы Gnome и KDE. Хотя эти рабочие столы чрезвычайно популярны на стандартных ноутбуках и настольных компьютерах, появление нетбуков породило новые задачи.
Площадь экрана у нетбуков невелика, и хотя большинство из них имеют широкоэкранные дисплеи, вертикальное пространство представляет большую ценность.
К сожалению, это пространство часто используется неправильно. Например, в Gnome в верхней части экрана есть панель, под которой находятся элементы оформления окна приложения (строка заголовка и кнопки управления окном), а еще ниже – меню приложения. Команда Ayatana сочла, что эти три элемента можно уместить в одной верхней панели. Это, и некоторые другие изменения слились в проекте Unity, ориентированном именно на нетбуки.
При запуске приложения в Unity оно максимизируется на весь экран, и элементы оформления окна исчезают. Кнопки управления окном оказываются на па-нели, и меню приложения тоже выносится на панель. Вы немедленно получаете добавочное место на экране.
Однако Unity – нечто большее, чем просто экранная площадь. Unity предлагает новое средство запуска приложений и файлов; средства поиска встроены в систему благодаря применению проекта Zeitgeist; и включены все прочие улучшения от Ayatana. В Ubuntu 10.10 можно установить интерфейс Unity командами
sudo apt-get update sudo apt-get install unity
Пример из жизни: GStreamer
Еще один очень успешный проект, способствовавший эволюции сред рабочего стола – GStreamer, инфраструктура создания и воспроизведения медиа-файлов.
Когда основным интерфейсом Linux была командная строка, мы на всех углах трубили о преимуществе подхода UNIX, при котором утилиты для частных задач объединяются в цепочку, чтобы выполнить большое задание. Команда разработчиков GStreamer применила этот подход к обработке мультимедиа. Вы берете один компонент, чтобы считать звуковой файл; передаете его выход другому компоненту для декодирования; декодированное содержимое поступает на третий компонент, который настраивает громкость и передает свой вывод четвертому, а тот отсылает аудиоинформацию звуковой системе для вывода на динамики.
Инфраструктура GStreamer была доступна на множестве языков программирования, поддерживала массу кодеков и поставлялась в комплекте с большим количеством компонентов, что позволяло разработчикам создавать индивидуально настроенные, оптимизированные конвейеры.
Инфраструктура GStreamer изменила подход к обработке мультимедийной информации в Linux. Разработчики приложений получили возможность обогатить их мультимедиа-примочками, не погрязая в частностях кодирования и декодирования форматов и прочих сложностях. GStreamer используют Rhythmbox, Banshee, Pitivi, Jokosher и многие другие приложения.
Гармония значков
Еще одним ключом к эволюции рабочих столов явилось достигнутое в 2006 году понима-ние того факта, что значки – критически важный элемент рабочего стола. Пользователи ожидают, что их «окрас» будет соответствовать общему стилю, а их комбинация – смотреться эффектно. Достичь этого было непросто, при наличии тысяч приложений от тысяч авторов с непохожими представлениями об элегантности.
Одним из первых решений этой проблемы стал проект Tango (http://tango.freedesktop.org) – попытка создать стандартный набор указаний по стилю значков и выбору цветовой палитры для них, чтобы каждый значок органично смотрелся на фоне остальных компонентов рабочего стола.
Хотя изначально проект Tango развивался силами команды Gnome, команда KDE приняла ряд сходных установок, в рамках проекта Oxygen (http://oxygen-icons.org): значки сделались чуть более Mac-подобными. Оба проекта добились успеха, и сравнив вид рабочего стола 2005 года с современным, вы поймете, что красивые значки резко меняют ваши ощущения от рабочего стола.