11 лет назад 10 мая 2008 в 3:08 49

Годом раньше

Автор: Сергей Яремчук

Одной из особенностей windows vista является 3d-десктоп. Но в linux трехмерные рабочие столы появились как минимум на год раньше, и для того чтобы их увидеть в работе, навороченный компьютер не потребуется.

ПРОЕКТЫ И РЕШЕНИЯ

Самостоятельный поиск 3D-решения поначалу сбивает с толку: за несколько лет Unix буквально оброс проектами, которые решают задачу перехода на 3D-десктоп каждый по-своему. Традиционно для Linux задачи были разделены. За новую реализацию Х-сервера, использующего прорисовку объектов через OpenGL, отвечают проекты Novell XGL и AIGLX (Accelerated Indirect GLX) проекта X.Org. Задача XGL (X over OpenGL) – полная замена текущего Х-сервера. Проект AIGLX хотя и преследует аналогичные цели, но предлагает надстройку над X-сервером. Создание XGL поделено на два этапа. Пока мы имеем дело с Xglx – временной разработкой. По своей архитектуре она очень напоминает AIGLX, и для ее работы тоже требуется уже установленный Х-сервер (код XGL был включен в CVS проекта freedesktop.org, поэтому его отдельная установка не требуется); Xglx будет работать поверх него и использовать GLX, создавая OpenGL-окно. Использование существующего X-сервера позволяет разработчикам уже сегодня сфокусироваться на функциональных возможностях сервера, а не на сопряжении с многочисленными видеокартами. Окончательный же вариант – Xegl – дело недалекого будущего: большая часть кода будет перемещена в Xglx, и код, зависимый от драйверов, из X-сервера будет удален.

Непосредственный вывод Рабочего стола лег на плечи композитных оконных менеджеров. Здесь опять же предлагается два направления: Metisse (insitu.lri.fr/metisse) и Compiz (compiz.org). На сайте Metisse написано: “This is a not 3D desktop”, то есть это не трехмерный Рабочий стол, это, скорее, инструмент для создания новых типов Рабочих столов. Metisse отличается от 3D-десктопа тем, что предлагает улучшенный вариант интерфейса (human-computer interfaces), повышающий эффективность и удобство. Например, стало легче копирование информации из одного окна в другое, проще переключаться между виртуальными столами, окна приложений можно вращать, складывать, как листок бумаги, и так далее. Использование OpenGL делает эту среду очень привлекательной.

На первых презентациях возможностей Xgl использовался композитный менеджер glxcompmgr. Из-за многочисленных проблем он сейчас не разрабатывается, и его место занял Compiz, который уже полностью полагается на 3D-возможности современных видеокарт и предоставляет большое количество графических эффектов. Удобно, что его можно запускать в любых графических средах, в том числе GNOME и KDE. Он содержит целый комплекс различных плагинов, декораторов и инструментов для настройки интерфейса и эффектов. Некоторое время параллельно с менеджером Compiz развивалась еще одна ветка проекта (community branch), которая отличалась от стандартной версии лучшей интеграцией со средами GNOME и KDE. Плюс собственный менеджер настроек (CSM) и более гибкий декоратор окон (CGWD, позже Emerald). Но один из основных разработчиков – программист из Novell, поддерживающей проект XGL/Compiz, Дэвид Ревемен решил, что ответвление уже достаточно далеко ушло от оригинального проекта, а значит, пришло время разделяться. На коде community branch 19 сентября 2006 года появился Beryl (www.beryl-project.org). Некоторое время проекты развивались отдельно, но уже в апреле следующего года было объявлено о слиянии Beryl и Compiz в единый проект. В итоге команда Compiz взяла на себя ответственность за ядро (Compiz-core), а разработчики Beryl будут заниматься плагинами (Compiz-extra). Вот так и появился Compiz Fusion (www.compiz-fusion.org), который фактически является набором расширений и инструментов настроек для Compiz. Но для краткости, если говорят о Compiz Fusion, подразумевают оба решения. Например, при запуске дистрибутива Mandriva One 2008 пользователя попросят выбрать один из вариантов 3D-десктопа: Metisse или Compiz Fusion. Сегодня разработка Beryl полностью прекращена, и его код адаптируется под новый проект.

УСТАНОВКА COMPIZ FUSION

Перед использованием любого композитного оконного менеджера следует убедиться, что установлены драйверы для поддержки аппаратного ускорения в видеокарте. Это просто. Запускаем консоль и вводим:

$ glxinfo | grep rendering

Если в ответ получено “direct rendering: Yes”, можно смело двигаться дальше.

Многие дистрибутивы (Mandriva, openSUSE и другие) имеют нужные драйверы изначально. В других придется установить их самостоятельно. К сожалению, универсального совета на все случаи жизни дать нельзя. Здесь уже следует пользоваться рекомендациями к дистрибутиву. Например, в Kubuntu 7.10 достаточно вызвать System Setting, зайти во вкладку “Проприетарные драйверы” (Restricted Drivers) и поставить флажок напротив видеокарты. Все остальное сделает система. Но в более ранних версиях установку драйверов придется делать самим. Еще одним весьма желательным требованием является активация расширения Composite в конфигурационном файле X-сервера. Проверить это просто. Вводим в окне терминала:

$ grep Composite /var/log/Xorg.0.log

Если в ответ получаем строку “Extension “Composite” is enabled”, значит все в порядке. Иначе добавляем в файл etc/X/xorg.conf такие строки:

Section “Extensions”

Option “Composite” “Enable”

EndSection

Хотя с закрытыми драйверами видеокарт ATI данный параметр может конфликтовать, поэтому в такой ситуации придется его отключить.

К сожалению, по поводу установки Compiz Fusion в разных дистрибутивах также нельзя дать однозначного решения. После анонса проекта он уже включен в состав некоторых дистрибутивов, например упоминаемых выше Mandiva 2008, Ubuntu 7.10. Часто нужно просто его включить, но по умолчанию эффекты не активированы, разрешить их можно, выбрав “Система – Параметры – Эффекты Рабочего стола”.

Пользователи openSUSE 10.2 и 10.3 могут установить Compiz Fusion одним нажатием – подробная информация на странице ru.opensuse.org/Compiz_Fusion. Есть он и в портах дистрибутива Gentoo, здесь достаточно ввести в консоли команду emerge -av compiz-fusion.

Для примера рассмотрим установку Compiz Fusion в дистрибутиве Kubuntu 7.10 “Gutsy Gibbon”. Сначала добавляем в файл etc/apt/sources.list информацию о новом репозитарии:

deb http://ppa.launchpad.net/amaranth/ubuntu gutsy main universe

deb-src http://ppa.launchpad.net/amaranth/ubuntu gutsy main universe

Обновляем список пакетов:

$ sudo apt-get update

И теперь устанавливаем приложения (все плагины устанавливать не обязательно):

$ sudo apt-get install compiz-kde compiz-fusion-plugins-main compiz-fusion-plugins-extra compizconfig-settings-manager emerald librsvg2-common

Есть и другой вариант установки и обновления Compiz Fusion, подходящий для дистрибутивов (K)Ubuntu и Debian – использование скрипта Git4CF Automator (elemongw.exofire.net/projects/linux-section/git4cf-automator). Этот скрипт автоматически загрузит все необходимые программы, скомпилирует и установит последнюю версию Compiz Fusion. Правда, по непонятным причинам даже успешная установка не всегда означает, что все будет работать, как нужно.

Теперь чтобы запустить Compiz Fusion, достаточно ввести в консоли:

$ compiz –replace

Для настройки эффектов вызываем программу CompizConfig Settings Manager, введя в консоли ccsm либо выбрав пункт в меню К. Если все работает без проблем, в каталоге автозапуска среды KDE создаем скрипт, который будет в дальнейшем обеспечивать старт Compiz Fusion:

$ echo “compiz –replace” > ~/.kde/Autostart/startcompiz.sh

И делаем этот файл исполняемым:

$ chmod +x ~/.kde/Autostart/startcompiz.sh

ВОЗМОЖНОСТИ COMPIZ FUSION

Дальнейшие настройки зависят только от вашей фантазии и мощности системы. Хотя 3D-эффекты, выставленные на максимум, не очень нагружают даже не самую современную систему. Очевидно, основная нагрузка по обработке ложится все-таки на видеокарту, а не на процессор. CompizConfig Settings Manager частично локализован, поэтому разобраться в его многочисленных настройках будет несложно.

Поведение Compiz Fusion очень зависит от выставленных “горячих” клавиш, поэтому при работе в разных средах (KDE, Gnome) могут быть различные нюансы. Так, чтобы перенести приложение на другой Рабочий стол, достаточно его захватить мышкой и передвинуть на край десктопа. Для того чтобы просто перейти на следующий виртуальный стол, можно использовать среднюю кнопку мышки или комбинацию клавиш Ctl+Alt+Left/Right и Up/Down. Если добавить к этой комбинации еще и Shift (Ctl+Alt+Shift+Left/Right), то будет захвачено активное окно. Эффект “Куб” позволяет быстро переключаться на один из четырех Рабочих столов. Но для того чтобы можно было вращать куб, нужно активировать эффект Rotate.

Эффект Skydome позволяет добавить PNG-картинку для фона, возможно добавление SVG- или PNG-изображения на поверхности куба. Если поднести мышку к верхнему правому углу, все окна приложений выстроятся на Рабочем столе, позволяя быстро выбрать нужное (Scale). Если нажать Alt-Tab, будут показаны небольшие окошки приложений, и выбирать нужное будет легче. Но плагин Switcher реализует эту же возможность для открытых приложений на всех Рабочих столах. Чтобы получить уменьшенные изображения всех окон, достаточно нажать клавиши Сtrl+Alt+Tab. При этом все окна кроме активного будут затенены.

Окно раскрывается подобно скатерти и сворачивается обратно. Действие плагина Wobbly заключается в том, что окно становится вязким при перемещении и изменении размера. Так, если потянуть за край окна, он просто отогнется, как тряпка.

Плагин Opacity отвечает за управление прозрачностью окна. Ее можно изменить из контекстного меню заголовка окна, но проще это сделать, нажав клавишу Alt и затем вращая колесико мышки вверх/вниз. Удобно, что для каждого окна можно указать свою степень прозрачности.

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

Так что не одна Vista может похвастаться трехмерным интерфейсом, в мире “пингвинов” они тоже есть, и выбор их более широк, системные требования на порядок ниже, а сами эффекты гораздо качественнее и разнообразнее.

В начальной стадии разработки находится и проект Java Looking Glass (lg3d.dev.java.net), написанный на Java и предлагающий свою реализацию трехмерного рабочего окружения.

В новой версии KDE 4, которая была представлена в начале этого года, полностью переработана система, отвечающая за вывод графики. Оконный менеджер KDE KWin теперь поддерживает некоторые OpenGL-эффекты, хотя и не приближается по возможностям к композитным оконным менеджерам.

К сожалению, с определением поддержки аппаратного ускорения в Linux не так просто. Direct rendering предполагает аппаратное ускорение, но не наоборот, хотя их обычно считают синонимами. И вывод “glxinfo” “direct rendering: No” еще не означает, что нет аппаратного ускорения. Например, потому, что Xgl использует indirect rendering.