Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #134, ФЕВРАЛЬ 2010 г.

Обзор 7 ключевых технологий KDE 4

Евгений Зобнин (zobnin@gmail.com)


KDE 4 включает в себя 7 ключевых технологий, также известных как "Столпы KDE" (Pillars of KDE), которые позволили ему выйти на лидирующие позиции по технологичности и продуманности среди всех окружений рабочего стола. В этой статье я познакомлю тебя с этими технологиями и докажу, что KDE 4 вовсе не "ошибка природы", а гигантский шаг вперед.

Итак, 7 столпов KDE 4:

  • Solid - API и "прослойка" для абстракции над железом.
  • Phonon - мультимедиа API.
  • Decibel - сервис и API для организации общения в режиме реального времени.
  • Akonadi - фреймворк PIM.
  • Nepomuk - семантический рабочий стол.
  • Plasma - фреймворк рабочего стола.
  • Oxygen - новая тема рабочего стола.

Solid

KDE 4 способен работать на множестве операционных систем, включая различные варианты BSD и Windows. Каждая из этих ОС требует собственного подхода к работе с оборудованием и вынуждает программистов приложений придумывать различные прослойки для работы с ним, учитывающие особенности различных ОС и их версий. Разрабатывая приложения для среды KDE 4, программист не обязан выдумывать такие прослойки самостоятельно, а может положиться на Solid API.

Solid - это обертка вокруг средств управления железом, которая позволяет разработчикам приложений использовать единый API для доступа к оборудованию компа в любой ОС. Solid не идет на замену HAL и другим средствам, он лишь создает удобный интерфейс к их функциональности, позволяя использовать самые разные движки для доступа к оборудованию, такие как HAL, NetworkManager и BlueZ. При этом замена существующего движка или добавление нового не повлечет за собой переписывание приложений, использующих Solid, потребуется обновить лишь его самого.

Пользователям Solid может дать не меньше удобств. В KDE 4 работа с оборудованием происходит гораздо более гладко и умно. Найдя в системе установленный NetworkManager, KDE автоматически начнет использовать его возможности для поиска и настройки сетей. Среда способна самостоятельно находить более высокоскоростные каналы связи и переключаться на их использование, при подключении флешки может быть произведен автоматический бэкап ее содержимого на жесткий диск. И, конечно же, все это работает одинаково в любой поддерживаемой ОС.

Phonon

С появлением aRts KDE 2 обзавелся собственным звуковым сервером и API, которые позволили разработчикам приложений абстрагироваться от конкретных устройств вывода звука, а пользователям - услышать звук сразу из нескольких источников (тогда еще ни Linux, ни BSD не умели микшировать звуковые потоки программно).

aRts продержался в KDE до последних выпусков KDE 3, но из-за вложенных ограничений, таких как отсутствие поддержки видео и невозможность использования других звуковых движков, был выкинут из KDE 4 и заменен на новый мультимедиа-фреймворк Phonon.
В отличие от aRts, Phonon более комплексное и гибкое решение, благодаря которому пользователи получают тонкий контроль над источниками и приемниками звука, могут управлять накладываемыми эффектами, в один клик настраивать самые изощренные схемы прохождения звука (например, направить звук от Skype в наушники, а уведомления от Kopete - в колонки), использовать единый пункт настройки звука (приложения, использующие Phonon, вообще не имеют собственных средств настройки звука), задействовать все преимущества Solid для автонастройки устройств вывода звука (например, при подключении USB-наушников Phonon может автоматически переключать Skype на вывод звука через них).

Разработчикам Phonon дает не меньшую свободу и удобство. Его API поддерживает не только вывод звука, но и видео, при этом API очень прост и компактен. Например, для проигрывания звукового файла с помощью Phonon API достаточно всего четырех строк кода на C++ (тогда как в случае с aRts требовалось 30):

media = new MediaObject(this);
connect(media, SIGNAL(finished()), SLOT(slotFinished()));
media->setCurrentSource("/home/username/music/filename.ogg");
media->play();

Отличительная особенность Phonon заключается также и в том, что он не использует единственный встроенный движок вывода аудио и видео, а может использовать его самые разные варианты, начиная от Xine и GStreamer на UNIX-платформе и заканчивая DirectShow на Windows (переключение между которыми может быть произведено на лету, без остановки воспроизведения).

Decibel

KDE 4 обзавелся и собственным фреймворком для организации общения в режиме реального времени, включая голосовую и видеотелефонию, IP-телефонию (VoIP), текстовые чаты и обмен сообщениями (IRC, ICQ, Jabber).

Decibel основан на Telepathy API (проект freedesktop.org) и использует совместимую с ним библиотеку Tapioca. Ему подчинено все, что относится к мгновенной доставке сообщений между двумя и более пользователями. Любой компонент KDE 4, способный предоставить такой функционал, может (и должен) использовать Decibel.

Decibel существенно упрощает программирование приложений, поддерживающих функции обмена мгновенными сообщениями, и позволяет разработчику сконцентрироваться на функциональности приложения, а не на отлове ошибок и реализации функциональности, специфичной для обмена сообщениями.

Akonadi

В KDE 3 приложения, управляющие персональной информацией, вынуждены были хранить свои данные раздельно, в результате чего часть информации дублировалась. Kmail, Kontact и другие программы, управляющие личной информацией, использовали собственный метод доступа к ней, поэтому данные были не согласованы, часто дублировались, а программистам приходилось проделывать множество дополнительной работы для поддержания несогласованных между собой, но повторяющих функциональность, систем. В KDE 4 управление персональными данными организовано совершенно иначе, и здесь за ее хранение отвечает Akonadi.

Говоря простым языком, Akonadi - это фреймворк PIM (Personal Information Management, Управление Персональной Информацией), который представляет собой клиент-серверную инфраструктуру, предназначенную для хранения персональной информации, обрабатываемой различными приложениями, и получения доступа к ней.

Akonadi технологичен, а это значит, что кроме простого хранения данных, он предоставляет программистам быстродоступный кэш, обладает собственным языком запросов, позволяет производить прозрачную синхронизацию данных с другими ресурсами, может быть расширен для поддержки новых типов данных и ресурсов, предлагает простой и понятный API и многое, многое другое. По сути Akonadi дает программистам все, что нужно для реализации хранения персональных данных пользователя в их программах.

Что до простых пользователей, то благодаря Akonadi они получают весьма полезные свойства: приложения могут не дублировать в памяти данные, сохраняя ее для других нужд, синхронизация данных происходит полностью в фоновом режиме, а приложения всегда "видят" актуальную информацию.

Nepomuk

NEPOMUK (Networked Environment for Personalized, Ontology-based Management of Unified Knowledge, Сетевое окружение для персонализированного и основанного на Онтологиях управления Единым Знанием) - это спецификация, описывающая социальный семантический рабочий стол, о котором можно прочитать на странице http://nepomuk.semanticdesktop.org, и который не имеет отношения к KDE как таковому. Однако реализация этой спецификации для KDE 4 очень интересна и напрямую касается темы статьи.

Несмотря на пугающую и кажущуюся совершенно бессмысленной расшифровку термина, идея семантического десктопа и Nepomuk достаточно проста и сводится к тому, чтобы получить рабочий стол, в котором доступ к информации будет производиться семантическими средствами. Говоря другими словами, в таком окружении пользователь сможет выполнить запрос вида "Прошлогодние фотки с Анькой" и получить ответ в виде открытого просмотрщика фотографий, содержащего эти самые фотографии.

Чтобы добиться этого, KDE-реализация Nepomuk использует индексирующий инструмент Strigi, анализирующий новые файлы и извлекающий из них метаданные (например, на основе mp3-тегов). В дополнение метаданные могут быть созданы самим пользователем, используя, например, файловый менеджер Dolphin (как ты мог заметить, в его правой панели отображается не только информация о файле, но и интерфейс выставления рейтинга, добавления комментариев и тегов). Накопив достаточную базу тегов, комментариев и рейтингов, пользователь может инициировать поиск нужных файлов, просто набрав тег в KRunner (Alt+F2).

На данный момент Nepomuk закончен не полностью и по умолчанию отключен. Чтобы проверить его в действии, необходимо перейти в настройки (System Settings), открыть вкладку Advanced, выбрать элемент Desktop Search и отметить галочками пункты Enable Nepomuk Semantic Desktop и Enable Strigi Desktop File Indexer. Перейдя на вкладку Advanced Settings, можно выбрать каталоги для индексирования. После нажатия кнопки Apply Strigi начнет действовать и сообщит о проделанной работе с помощью стандартного уведомления. После этого можно запустить KRunner и набрать имена тегов для поиска.

Plasma

Во времена KDE 1 рабочим столом управлял файловый менеджер KDE. Именно он был ответственен за создание иконок на рабочем столе и панели задач. С выходом KDE 2 файловый менеджер распался на несколько независимых приложений, управляющих разными компонентами рабочего стола: файловый менеджер, предназначенный для навигации по файловой системе, панели, исполняемые в рамках отдельных процессов, и рабочий стол, хранящий иконки. В KDE 3 к этой тройке добавилась еще и SuperKaramba - неофициальное дополнение к рабочему столу KDE, позволяющее размещать на нем виджеты.

Со временем такое положение дел становилось все более неудобным как для разработчиков, так и для пользователей. Компоненты рабочего стола были плохо связаны друг с другом и не могли в полной мере консолидировать действия по поддержке рабочего стола. Пользователи жаловались на недостаток эффектов рабочего стола и его несовременность. Апплеты были слишком примитивны и могли быть написаны только на языке C++. Эти проблемы в конечном итоге привели к полному избавлению KDE 4 от KDesktop, Kicker и SuperKaramba и интеграции в него новой технологии, получившей имя Plasma.

Plasma - это своего рода фреймворк рабочего стола, который объединяет воедино сам рабочий стол, панели, иконки, виджеты и апплеты. Исполняясь в рамках одного процесса, Plasma делает рабочий стол KDE 4 интегрированной средой с общим API для разработчиков и гармоничным внешним видом для пользователей.

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

Для пользователя, конечно, вся однотипность интерфейса скрыта, и он по-прежнему видит панели, иконки, виджеты рабочего стола (в классическом понимании), однако стоит ему начать использовать KDE 4, как он заметит, что любой виджет можно легко превратить в апплет, просто перетащив его на панель, или выполнить обратную процедуру, вытащив, к примеру, трей из панели и поместив его на рабочий стол, рядом со сводкой погоды и корзиной.

Plasma интегрирована со скриптовым фреймворком Kross, поэтому плазмойды могут быть написаны не только на родном для KDE языке C++, но и на JavaScript, Ruby или Python. Более того, в Plasma интегрировано несколько библиотек, обеспечивающих совместимость с виджетами других сред, поэтому Plasma также поддерживает и гаджеты Google и виджеты Mac OS X (они, однако, не обладают гибкостью плазмойдов и могут быть размещены только на рабочем столе).

Plasma обеспечивает возможность произвольного масштабирования и вращения плазмойдов. Рабочий стол KDE 4 действительно легко масштабируется и может выглядеть одинаково на разных дисплеях и при разных разрешениях. При этом не возникает каких-либо проблем со шрифтами, разрешением иконок и т.д. Рабочий стол в буквальном смысле растягивается и сжимается.

Масштабируемость рабочего стола и виджетов, а также возможность вкладывания виджетов друг в друга позволяет Plasma быть действительно универсальным решением для всех типов интерфейса. Например, в рамках проекта Plasma-Netbook планируется реализовать специальный тип интерфейса для нетбуков. Чтобы понять, что это не просто перетаскивание панелей на другие места, а действительно новый интерфейс.

Кроме того, в рамках проекта Google Summer of Code Алессандро Диафериа (Alessandro Diaferia) создал интерфейс медиацентра, полностью основанный на Plasma. В качестве экспериментов с помощью Plasma были созданы даже интерфейсы приложений.
Кроме красоты, универсальности и глубокой внутренней проработанности, Plasma вносит в KDE 4 еще одно очень полезное и удобное в работе свойство: activity. Активностью в KDE 4 называется какой-либо вид деятельности. Идея в том, что работая за компом, пользователь в один момент времени занят только какой-то одной деятельностью, например, разработкой ПО, игрой в игры, просмотром фильмов, браузингом сети и т.д. Для любого вида деятельности в KDE есть набор виджетов, которые пользователь может разместить на своем рабочем столе. Загвоздка только в том, что если он "повесит" все виджеты, которые только могут ему пригодиться, на рабочий стол одновременно, то это не только будет неудобно, такое большое количество виджетов просто не поместится на экране. Активности позволяют создать индивидуальный набор виджетов для каждого рабочего стола, переключаясь между которыми, пользователь будет переходить от одного вида деятельности к другому.

Для создания активности кликни по эмблемке в правом верхнем углу экрана, выбери пункт меню Zoom Out. Когда рабочий стол отодвинется и станет в четыре раза меньше экрана, нажми Add Activity. После этого рядом с существующим появится новый рабочий. Нажми кнопку Zoom In под новым рабочим столом, чтобы перейти к его использованию. Все добавленные на него виджеты будут индивидуальны и не повлияют на другие рабочие столы.

Перемещаться между активностями с использованием кнопок Zoom In и Zoom Out не очень удобно, поэтому активности можно привязать к виртуальным рабочим столам. Для этого вновь нажми Zoom Out, затем Configure Plasma и поставь галочку напротив Different activity for each desktop.

Oxygen

Oxygen не может идти ни в какое сравнение с другими технологиями KDE 4, но, тем не менее, является важной составляющей новой версии среды. В двух словах: Oxygen - это полностью новая тема рабочего стола KDE 4, включающая в себя Qt4-тему, новые рамки окон, тему Plasma, новые иконки, курсоры и т.д. Имя Oxygen (кислород) указывает на то, что разработчики хотели "вдохнуть свежего воздуха в рабочий стол KDE 4".

Выводы

Как ты смог убедиться, KDE 4 вовсе не провал, а очень серьезный рывок вперед. Многие его компоненты настолько инновационны и занимательны, что им можно посвятить не одну отдельную статью. При этом сама среда постоянно совершенствуется и улучшается, и можно предположить, что к выходу KDE 4.8 она станет не менее стабильной и богатой на функционал, чем KDE 4.3.

Порой случается так, что решения проблем, накопленные годами, порождают новые проблемы, и эту цепочку совсем не просто разорвать. Выход один - сломать все и написать код с нуля. Так примерно и произошло со средой KDE 4, разработчики которой показали, что они готовы пойти на кардинальные изменения, ведь даже совместимость с предыдущей версией не гарантируется.

Начало третьей версии KDE положено в апреле 2002, за 7 лет развития много чего изменилось как в самом проекте, так и в IT-сфере. С одной стороны - появилось новое оборудование, технологии, ОС и так далее. А с другой стороны - код некоторых компонентов и приложений (Kicker, Kdesktop, aRts) не менялся еще со времен KDE 2 и добавлять новое, не нарушив старое, было проблематично, а то и вовсе невозможно. Поэтому все новинки, вроде SuperKaramba, не встраивались, а наслаивались на то, что есть. Как ты понимаешь, это не могло положительно сказаться на стабильности, совместимости и производительности. Кроме того, многие идеи, например рабочий стол - папка, оказались не совсем удачны и ограничивали пользователя. Для программистов KDE 3 являлась мудреной головоломкой, требовавшей каждый раз "индивидуального" подхода, и становилось все сложнее добавлять новые вкусности в заваренную кашу.
В KDE 4 учтены все пожелания и ошибки, в том числе изменена структура проекта. Модульность позволит быстро включать новые функции и постепенно отказаться от устаревших решений.

Недоработанность первых версий KDE 4 привела к тому, что начался отток пользователей в GNOME (который к релизу 2.30, возможно, окажется в таком же положении, как и KDE 4.0), но за 2 года была проведена колоссальная работа, и пользователи начали "возвращаться" в эту среду.

Владимир «turbina» Ляшко (v.turbina@gmail.com), автор статьи "Новые кеды для гламурного юниксоида", опубликованной в январском номере ][ за 2008 год.

Plasma и поддержка виджетов

  • Родные плазмойды, написанные на языках C++, JavaScript, Ruby или Python
  • Google Gadgets
  • Темы SuperKaramba
  • Гаджеты QEdje, совместимые с гаджетами Edje и модулями E17
  • Виджеты Mac OS X
  • Веб-виджеты с поддержкой HTML и JavaScript

INFO

  • Сами разработчики KDE, не лукавя, называют похожий на орех значок в углу экрана не иначе как кешью. Кстати, в KDE 4.5 его не будет.
  • Официально фреймворк Phonon был представлен как часть KDE 4.0 в январе 2008-го. В этом же году он был включен в релиз Qt 4.4.
Содержание