LXF85:Compiz

Материал из Linuxformat.

Версия от 06:30, 28 октября 2011; Ewgen (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Джонатан Остин продемонстрирует, как получить самые лучшие эффекты из Vista, OS X и более, слегка посидев на общественной ветке проекта Compiz!

Содержание

Compiz: Пробуем эффекты

Изображение:LXF85-Compiz-1.png
«Отслоим» окно с форумами Compiz и увидим, что под ним скрывается.

Compiz — это клево. Вы, небось, и сами это знаете — уже заставили себя посмотреть ролик с колеблющимися полупрозрачными окнами (просто для самоутверждения) или вращали под музыку куб с рабочими столами (как я?). Однако если вы обошли любовью установку Compiz после того, как Дэвид Ривмэн [David Reveman] из Novell выпустил исходный код в феврале, считайте себя в пролете.

Когда руководство по созданию расширений для этого чудо-OpenGL ускоренного оконного менеджера появилось в сети, на форумах Ubuntu замелькали заплатки, добавляющие новые возможности к Compiz. QuinnStorm, 23-летняя программистка из Питтсбурга, известная своим большим вкладом в исходный код, упорядочила этот хаос, добавив новые возможности, применив заплатки других людей и собрав все в пакет. Ее работа стала общественной веткой Compiz под названием 'QuinnSource'.

Список возможностей Compiz-Quinn слишком длинен, чтобы привести его здесь — но, действуя по инструкциям на последующих страницах, вы получите размытые заголовки окон, собственные оконные рамки и список «Что сделать» поверх вашего куба; раскидаете окна по рабочим столам и отслоите их, чтоб узнать, что под ними; или подключите D-BUS к Compiz — пусть делает всякие трюки за вас; да много чего еще. Но хватит капать слюной: пора за дело.

Часть 1 Установим Compiz-Quinn

Изображение:LXF85-Compiz-2.png
Подобно Моисею, расширение Show Desktop заставляет море окон расступиться, и вы попадаете на свой рабочий стол.

QuinnStorm сама выпускает пакеты для Ubuntu (работающие на Dapper и Edgy); существуют также RPM-пакеты для SUSE Factory и Fedora, их выпускают Cyberorg и Sams — см. первую часть руководств по каждому дистрибутиву в этом разделе, чтобы узнать подробности.

Обычно эти пакеты достаточно свежи, но поклонники истинной свободы делают сборку из исходных текстов. К счастью, это несложно, если вы работаете на Ubuntu (6.06), SUSE или Fedora. Просто следуйте руководству, чтобы учесть все зависимости для вашего дистрибутива, а затем перейдите к разделу Сборка, чтобы собрать Compiz-Quinn.

Данные рекомендации предполагают, что у вас уже установлен Compiz — если нет, то смотрите списки HOWTO для вашей системы и графической карты: в эту статью все тонкости не уместятся. Поддерживается ли ваша карта или нет, узнайте на http://gentoo-wiki.com/HARDWARE_Video_Card_Support_Under_XGL. Прежде чем чтолибо установить, подумайте: большинство описываемых здесь программ пока что в находится разработке и в любой момент может измениться, сломаться или исчезнуть в клубах дыма (увы, я не имею в виду спецэффект при закрытии окна).

Ubuntu

Сюрпризы от кодеров Compiz
  • Используя Show Desktop, нажмите F7, чтобы убрать с дороги все окна. От PlayerX
  • Используя Blurred Titlebars, можно изменить в Gconf значение размытия и карту отражения. От Idontknow12
  • Рост и сжатие: Окна появляются в месте положения курсора мыши и сжимаются при разрушении окна. От QuinnStrom
  • С помощью Neg, обращайте цвета окон (Super+N) или всего экрана (Super+M). От Moppsy
  • Эффект Water нарисует рябь и дождь на вашем экране (Ctrl+Super, Shift+F8 вызывает дождь). От Дэвида Ривмэна

Начнем с того, что отредактируем sources.list и включим репозитарии сообщества:

sudo gedit /etc/apt/sources.list

Теперь добавьте одну из следующих трех строк (это зеркала):

deb http://media.blutkind.org/xgl/ dapper main
deb http://ubuntu.compiz.net/ dapper main
deb http://www.beerorkid.com/compiz/ dapper main

а затем

deb http://xgl.Compiz.info/ dapper main

Далее, возьмем GPG-ключ QuinnStorm и добавим его в APT, чтобы обновить базу пакетов и получить самые свежие пакеты:

$ wget http://www.beerorkid.com/Compiz/quinn.key.asc -O - |
sudo apt-key add -
sudo apt-get update
sudo apt-get install Compiz cgwd Compiz-gnome xserver-xgl
cgwd-themes

Если собирать пакеты вам не надо, переходите к Части 2. А если вы собираете Compiz, боюсь, придется установить куда больше пакетов. Возможно, некоторые из них уже у вас есть, если вы собирали программы раньше — я разместил список, достаточный для меня, в файле Magazine/Compiz/Text/Ubuntu Build Deps на диске к журналу, и вы можете просто скопировать его и вставить. Список покажет вам, сколько нового кода вы затащите в систему. Не советую за это браться, если вы добиваетесь стабильности и боитесь что-то поломать!

SUSE

На нашем уроке я буду использовать Smart в качестве менеджера пакетов SUSE. Если у вас еще не стоит Smart, можете найти его на странице http://snipurl.com/vfw2 или просто найти RPM-пакет для вашей архитектуры на диске в каталоге Magazine/Compiz/Utilities/smart. Обзаведясь им, можно начать установку программ. Наберите #smart update для настройки каналов (вдобавок, сейчас самое время поставить Smart-gui).

Теперь добавьте репозитарии Compiz-Quinn в источники Smart:

smart channel --add http://software.openSUSE.org/download/compiz-quinn/SUSE_Linux_10.1/compiz-quinn.reposudo
smart update

Если вы используете версию 10.2 Beta или Factory, замените SUSE_LINUX_10.1 на SUSE_Factory. Теперь мы можем установить последние версии всех программ:

sudo smart install compiz-quinncvs xgl-cvs cgwd-themes gsetcompiz

Эта команда обновит ваши программы до последних версий. На время написания этой статьи новейшие расширения не загружались автоматически, поэтому вам придется загружать их вручную с помощью Gconf или использовать команду, чтобы подключить все расширения, которые Quinn добавила в версию Ubuntu — текст находится в Text/AllPlugins.

gconftool-2 -s /apps/compiz/general/allscreens/options/active
plugins -t list --list-type=string [gconf,decoration,reflection,blur,obbly,fade,minimize,cube,rotate,
zoom,scale,move,resize,place,dbs,switcher,water,trailfocus,state,neg,bs,showdesktop]

Однако этот набор может измениться — могут добавиться другие расширения, также необходимые для корректной работы. Кто не хочет собирать версию сам, может спокойно перейти ко 2-й части.

К несчастью, сборка Compiz-Quinn для SUSE 10.1 не так проста, как для Ubuntu, потому что для этого нужно скомпилировать свою версию Mesa. Compiz требует libGL.so из Mesa версий 6.5 и выше, а SUSE 10.1 все еще поставляется с версией 6.4.1 (с версиями Factory и 10.2 Beta все будет в порядке). Я включу здесь необходимые зависимости для случая, если вы захотите собрать собственную версию Mesa, или для тех, кто будет делать пакеты Mesa 6.5 для 10.1 в ближайшем будущем. Я отметил разделы ‘Gnome Development’ и ‘C/C++ Development’ в менеджере пакетов Yast2, и вы их тоже отметьте, как и все прочее из списка Magazine/Compiz/Text/SUSE Build Deps. Теперь переходим к разделу Сборка.

Fedora Core

Изображение:LXF85-Compiz-3.png
Trailfocus уменьшает непрозрачность окна, яркость и насыщение, и сразу видны недавно работавшие окна.

Благодаря Sams из http://www.illawarra.org/linux у вас уже есть Compiz, остается только добавить некоторые новые репозитарии Yum и получить последние версии пакетов. Запустите все последующие команды от лица root (su -, а не просто su):

rpm -ivh http://www.illawarra.org/linux/sam-repo-5-2.fc5.noarch.rpm
yum install xorg-x11-server-Xgl sam-switch compiz-quinn cgwdcgwd-themes gset-compiz gconf-editor

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

export GCONF_CONFIG_SOURCE="xml:merged:/etc/gconf/gconf.xml.defaults"
gconftool-2 --makefile-install-rule /opt/Xgl/etc/gconf/schemas/compiz.schemas

Последнее: запустите от имени суперпользователя sam-switch, для настройки новых пакетов. Сохраните все ваши документы перед запуском sam-switch xgl (как вам вежливо советует первая команда), X будет остановлен!

Если вы работаете только с пакетами, переходите ко второй части. В противном случае установите зависимости для сборки (в менеджере пакетов я отметил группы Development Libraries, Development Tools, Gnome, X Software Development; сделайте то же самое). Зависимости можно найти на диске в Magazine/Compiz/Text/Fedora Build Deps.

Сборка

Если вы хотите собрать самую свежую версию Compiz-Quinn, скачайте последнюю версию исходного кода из CVS-репозитория Quinn в подходящий каталог — мы будем использовать srcdir. На случай проблем при сборке, мы припасли на диске, в каталоге Magazine/Compiz/Code, копию исходных текстов, используемых на данном уроке. Возможно, эта версия уже малость [или даже не малость, — прим. ред.] устарела — ну тогда ждите от CVS исходников, которые согласятся собраться…

Чтобы скачать код из CVS, наберите

mkdir srcdir
cd srcdir
cvs -d:pserver:anonymous@metascape.afraid.org:/cvsroot co
compiz cgwd

Когда эта команда выполнится, можно продолжать. На машине, где уже установлен Compiz, вы, возможно, захотите использовать ключ --prefix=<ДРУГОЙ_ПУТЬ> и autogen.sh, чтобы не портить установленную версию. По умолчанию make install помещает все в каталоги /usr/local/bin и /usr/local/lib/Compiz — это подходит всем наши трем дистрибутивам. Для Fedora и SUSE мы статично компонуем Mesa (v6.5), поэтому добавим в конец ./autogen.sh строки соответственно для Fedora и SUSE:

--with-gl-libs="/lib/libGL.a -pthread -ldrm"
--with-gl-libs="/usr/lib/libGL.a -pthread -ldrm"

Вот код:

cd compiz
./autogen.sh --enable-libsvg-cairo --disable-kde
make
sudo make install

Теперь соберем Cgwd (Custom Generic Window Decorator). На этот раз для Fedora используйте PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/, перед запуском ./autogen.sh.

cd ..
cd cgwd
./autogen.sh
make
sudo make install

Этот код поместит новый двоичный файл Compiz в /usr/local/bin, а Cgwd — в /usr/bin/cgwd. В Debian и Ubuntu /usr/bin/Compiz — не двоичный файл, а скрипт, устанавливающий правильное значение LD_PRELOAD для различных карт. Чтобы скомпилированный вами двоичный файл заработал, применяется следующий трюк: переименуйте /usr/local/bin/Compiz в Compizcvs.real и поместите его в скрипт, аналогичный /usr/bin/Compiz. Полезно назвать этот скрипт, например, ‘Compizcvs’: тогда вам не придется указывать полный путь до двоичного файла каждый раз при вызове обычного Compiz.

Часть 2 Быстрые эффекты

Изображение:LXF85-Compiz-4.png
Движки тем Cgwd преподнесут вам необычные и прикольные эффекты, как эта тема от Zootreeves. Художники, помните: с властью приходит и ответственность…

Строительные работы завершены — можете использовать старый метод для запуска Compiz и инициализации версии QuinnStorm. Заметим, что Gnome-window-decorator был замещен на Cgwd, поэтому просто замените одну строчку на другую во всех используемых скриптах запуска, и все будет работать. У вас нет старого метода для запуска Compiz? Не беспокойтесь, перейдите к разделу «Иконка для сброса Compiz».

Пакеты Compiz-Quinn уже готовы показать всю свою красу, но вы, видимо, захотите все переделать по своему вкусу. Чтобы настроить Compiz, понадобится использовать один из графических инструментов настройки: лучшим на данный момент является Gconf. Почти вся функциональность Compiz-Quinn реализована в виде расширений, то есть любой эффект можно убрать, просто удалив его из списка в /apps/Compiz/general/allscreens/options/active_plugins. Некоторые расширения необходимо загружать в определенном порядке — например, эффект размытия загружается после декораций. Все это указано для каждого расширения в /apps/Compiz/plugins/<ваше_расширение>.

Прежде чем продолжать, имеет смысл исправить наиболее общие проблемы, преграждающие путь к нирване трехмерного рабочего стола: в частности, удалить черную «панель об уведомлении запуска» Metacity; это делается с помощью

Gconftool-2 --set --type boolean /apps/panel/global/enable_animations "False"
Gconftool-2 --set --type boolean /desktop/gnome/interface/enable_animations "False"

Если у вас нет Gconftool-2, можете сами поменять ключи через Gconf.

Также хорошо бы прекратить перезапуск X по Shift+Backspace, с помощью

xmodmap -e "keycode 22 = BackSpace BackSpace Terminate_Server"

Если проблема будет всплывать при перезапуске Compiz, просто добавьте эту строку в ваш скрипт запуска Compiz (или Compiz-start.py).

В-третьих, пусть нижняя часть окна исчезнет с экрана -

gconftool-2 --set --type boolean /apps/compiz/plugins/move/allscreens/options/constrain_y_bottom "False"

Наконец, если вы обнаружили, что полноэкранные приложения (например, видео или игры) прерываются или тормозят, смените /apps/Compiz/general/screen0/options/unredirect_fullscreen_windows на true — это значит, что во время работы полноэкранных приложений Compiz будет отдыхать, а вы получите прирост в скорости.

Эффекты

Изображение:LXF85-Compiz-5.png
Этот эффект не сложнее смены изображения небосвода в расширении Cube. Картинка крутится вместе с кубом!
Изображение:LXF85-Compiz-6.png
Только стеклянные окна должны быть прозрачными. Настоящие компьютеры размывают фон, чтобы зрелище было более спокойным.
Изображение:LXF85-Compiz-7.png
Vista? Нет, спасибо, Билл. Это на карте без поддержки пиксельных шейдерови с 64 MБ ОЗУ.

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

  • Бросайте свои окна. Включите /apps/Compiz/plugins/wobbly/screen0/options/release_effectи установите /apps/Compiz/plugins/wobbly/screen0/options/release_friction на '0.8'. Теперь, если вы перетаскиваете окно и отпускаете кнопку мыши, продолжая двигать мышь, то можете «перебросить» окно на другой рабочий стол.
  • Покажите все окна в переключателе. Эффект временно восстанавливает минимизированные окна при использовании переключателя (Alt+Tab), и вы можете бегло осмотреть их. Просто установите /apps/Compiz/plugins/switcher/screen0/options/temp_unminimize в on. Или воспользуйтесь /apps/Compiz/plugins/switcher/screen0/options/auto_rotate, чтобы увидеть все открытые окна (прыгать по ним можно при помощи комбинацией клавиш Alt+Ctrl+Tab).
  • Небосвод. Добавьте статичное или анимированное фоновое изображение в пустое пространство за кубом, добавив путь к квадратному изображению или изображению размером степени двойки (то есть 1024x1024 или 1024x2048) в /apps/Compiz/plugins/cube/screen0/options/skydome_image и установив skydome и/или skydome_animated в true.
  • Эластичное изменение размера. Установите /apps/Compiz/plugins/resize/allscreens/options/stretch_texture в on, чтобы Compiz увеличивал текстуру при изменении размера окна, когда вы отпустите мышь.
  • Вращайте куб при достижении границы экрана мышью. Для этого установите /apps/Compiz/plugins/rotate/allscreens/options/edge_flip_pointerв on и выберите значения по вкусу для /apps/Compiz/plugins/rotate/allscreens/options/flip_time.
  • Новые способы просмотра окон. Движения мыши в различные углы рабочего стола инициируют различные эффекты перемещения и отображения всех ваших окон. По часовой стрелке: показать только окна текущего приложения, показать рабочий стол (спрятать окна) и, наконец, собрать окна со всех рабочих столов. Измените значение /apps/Compiz/plugins/scale/screen0/options/organic — увидите более естественную раскладку окон.
  • Масштабируйте окна. И наконец, я выделяю этот пункт, потому что он находится в странном месте: опция для настройки «масштаба» окон проживает в /apps/Compiz/plugins/minimize/screen0/options/zoom_created_windows.

Размытие и темы

Скорая помощь

С помощью расширения Scale-All, нажав F10, вы увидите все окна со всех рабочих столов.

Видимо, ваш энтузиазм от этих 30-секундных эффектов иссяк, и я покажу, как применить некоторые новые эффекты к заголовкам окна и прочему.

Прозрачность идеальна для окон дома, но на компьютере она может сделать неотличимыми задний и передний фон на рабочем столе. К счастью, есть несколько расширений размытия. Одно из самых быстроразвивающихся расширений сделал, большей частью, некто Idontknow12. Главная его особенность — опция размытия без использования пиксельных шейдеров (/apps/Compiz/plugins/blur/allscreens/options/mode), поэтому даже люди вроде меня с GeForce 4 MX могут получить прикольные эффекты, рассчитанные на более мощное оборудование.

Расширение Idontknow12 может размывать все, что Compiz способен сделать прозрачным, установив /apps/Compiz/plugins/blur/allscreens/options/transparency_blur в on; вместе с Trailfocus это выглядит замечательно. Если хотите, можете поменять настройку расширения, чтобы размывать все подряд, с помощью Gconf.

Граница под контролем

Скорая помощь

Если у вашей видеокарты есть пиксельные шейдеры, можете увеличить значение размытия и повысить качество до 'best', для более интенсивного размытия. Включите transparency_blur, а off_onopacity установите в off, для полного размытия.

Другое крутое расширение от Idontknow12 — Отражение [Reflection]: выберите PNG-изображение, и оно будет растянуто и наложено на заголовок окна (независимо от того, есть ли размытие). Сделать собственную карту размытия в Gimp очень просто: создайте полупрозрачный PNG с дизайном, который вы хотите видеть на границах окна, например, полосы, шаблон или градиент (один из них помещен в каталог Utilities на диске). Поместите изображение где угодно, а затем вставьте полный путь до него в /apps/Compiz/plugins/reflection/allscreens/options/reflection_map.

Но это еще не все — с помощью Cgwd и GCompizthemer от QuinnStorm можно назначать темы для заголовков окон. Cgwd применяет различные «движки» для эффектов, таких уже есть несколько штук — движок ‘pixmap’ самый гибкий и мощный и создает поистине вызывающие темы. Благодаря Cornelious, кнопки освещаются при наведении на них курсора, и можно сделать внешний вид максимально приближенным к Vista.

Для создания собственной темы, подберите PNG-файл для каждой кнопки и добавьте его в разрастающийся GCompizthemer (самый простой способ научиться — просмотреть темы в Cgwd-themes). Можно взять любую их тем, присланных пользователями.

Приоденем окна

Любителей организовывать окна и придавать им большую узнаваемость порадует расширение State: оно позволяет устанавливать и хранить яркость, насыщение, прозрачность и первоначальный порт просмотра любого окна при загрузке. Для каждого свойства у него отдельные ключи, поэтому вы просто вписываете списки строк, разделенных запятыми. Строки выглядят таким образом: <тип_фильтра>:<значение_фильтра>:<значение>. В вашем арсенале — следующие типы фильтров:

  • w Тип окна. Принимает значения Dock, Toolbar, Menu, Utility, Splash, Normal, Dialog, ModalDialog или Unknown. Используйте xprop | grep TYPE и посмотрите последнее слово в строке, чтобы узнать тип любого окна.
  • c Класс окна. Обычно совпадает с именем исполняемого файла, только первый символ написан в верхнем регистре. Вы можете узнать класс окна с помощью xprop | grep WM_CLASS.
  • t Заголовок окна. Имя окна, отображаемое в его заголовке.
  • p Имя исполняемого файла, того же, что и исполняемый файл в $PATH.

Для упражнения, добавьте 'c:Gnome-terminal:80' в /apps/Compiz/plugins/state/screen0/options/opacity, чтобы у всех ваших окон терминала была прозрачность 80, а если вы добавите 'w:Menu:95' и 'w:Unknown:95', то ваши меню и всплывающие подсказки еще более похорошеют.

Часть 3 Внедримся на рабочий стол

Изображение:LXF85-Compiz-8.png
Это что, тостеры? С Xwinwrap любой рабочий стол движется — попробуйте видео, хранители экрана или даже терминал.

Здесь показано несколько трюков и секретов, которые позволят Compiz укорениться в вашем рабочем процессе и на рабочем столе (в случае с Xwinwrap — буквально). Дочитав этот раздел, вы будете считать Compiz не заменой Metacity или Kwin, но интегрируемым инструментом, без которого нельзя обойтись.

Xwinwrap был одним из инструментов, которые Дэвид Ривмэн (David Reveman) демонстрировал при выпуске Compiz; он позволяет поместить видео или хранитель экрана на рабочий стол как анимированный фон. Если его не нашлось в вашем репозитарии, то скомпилировать его несложно и самому:

cd srcdir
cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xapps co
Xwinwrap
cd Xwinwrap
make
sudo cp Xwinwrap /usr/bin/Xwinwrap

Официальной документации вроде бы нет, но Moppsy (участник разработки Compiz) выловил следующее из исходного кода:

'-g = parse geometry, -ni = no input, -argb = argb visual, -fs
= full screen, -s = sticky, -st = skip taskbar, -sp = skip pager,
-a = above, -b = below, -nf = no focus -o OPACITY'

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

  • Чтобы запустить хранитель экрана, наберите строку
Xwinwrap -ni -argb -fs -s -st -sp -a -nf -- /usr/lib/xscreensaver/glmatrix -root -window-id WID
  • А чтобы запустить видео, наберите
Xwinwrap -ni -o 0.6 -fs -s -st -sp -b -nf -- MPlayer -wid WID -quiet movie.mpg
  • Чтобы зациклить короткое видео, скажем, зеленые луга, вы можете использовать -loop <число> (0 — бесконечный цикл) как аргумент для MPlayer. Если у вас достаточно новая версия Rxvt или Urxvt, можно даже установить его на рабочем столе:
Xwinwrap -ni -argb -fs -s -st -sp -b -nf -- urxvt -depth 32 -bg rgba:0000/0000/0000/cccc -fg white

Иконка для сброса Compiz

Изображение:LXF85-Compiz-9.png
Потому что случаются проблемы…

Compiz не всегда работает так гладко, как вам хочется — поэтому, когда все работает как у Боба из Microsoft и вы остаетесь без оконного менеджера, полезно иметь иконку для перезапуска Compiz или замены его на Metacity. Скрипт на Python от Gandalfm, Compiz-start.py, выполняет эту работу, а также предоставляет доступ к функциям Compiz и инструментам настройки.

Чтобы попользоваться волшебством от Gandalfm, возьмите код из каталога Magazine/Compiz/Utilities/Compiz-start0.3 (можете пропустить эту часть, если используете пакеты SUSE: они поставляются со своей собственной версией). В этом каталоге сделайте следующее:

chmod 755 Compiz-start.py
sudo mv Compiz-start.py /usr/bin/
sudo mv logo24.png /usr/share/Compiz

и вы готовы к запуску (то есть к выполнению Compiz-start.py). Вы можете добавить скрипт в автозагрузку сессии, используя каталог автозапуска KDE или закладку Startup в диалоге Session configuration в Gnome. Чтобы он работал, не забудьте удалить все предыдущие методы автозапуска. Заметим, что для работы всех опций у вас должны быть установлены gCompizthemer и gset-Compiz — удалить их вызовы вы всегда сможете, отредактировав скрипт. Если вы не используете Cgwd, измените все вызовы 'cgwd' в скрипте на 'gnome-window-decorator'.

Я добавил в код несколько закомментированных «шаблонов» для новых пунктов меню. Не забудьте добавить определение команды и пункт меню, с помощью которого ее можно вызвать.

Расширение с D-BUS

Изображение:LXF85-Compiz-10.png
«Док» и первая версия Miniwin. Новая версия будет использовать D-BUS, и приложения типа kiba-dock смогут создавать «мини-окна».

Наш следующий подвиг — поделиться Compiz с другими скриптами и программами при помощи D-BUS, системы, позволяющей приложениям общаться друг с другом. Интеграция D-BUS с Compiz доставит множество хранителей экрана, программ запуска и приложений, использующих функции Compiz: например, вращение куба, переключение окон и установка прозрачности. Такая интеграция позволит разработчикам проделывать то же, что и с Aplle Quartz Extreme — расширение Miniwin служит хорошим примером.

Например, я удалил переключатель рабочих столов со своей панели, обнаружив, что он плохо работает с моими 8 рабочими столами (можете выбрать любое число до 32 в /apps/Compiz/general/screen0/options/size). Вместо этого я использую две иконки по краям моей панели для вращения рабочих столов в любом направлении. Если вам тоже этого хочется, сначала создайте новую кнопку запуска на панели, назовите ее Следующий Стол или как вам угодно и назначьте иконку (эта кнопка будет вращать куб вправо, чтоб вы знали, какую выбрать стрелку). Теперь во вкладке Выполнить наберите код:

dbus-send --type=method_call --dest=org.freedesktop.Compiz 
    /org/freedesktop/Compiz/rotate/allscreens/rotate_right 
    org.freedesktop.Compiz.activate string:'root'
    int32:0x52 string:'x' int32:[X_BUTTON_POS] string:'y' int32:[Y_BUTTON_POS]

заменив X\Y_BUTTON_POS на координаты кнопки. (Вы можете найти команду в Text\DBUS Commands в пакетах поддержки и две программы запуска в Utilities — просто не забудьте изменить координаты экрана.)

Повторите то же самое для другой стороны панели, изменив rotate_right на rotate_left и задав координаты для кнопки. Все!

Фактически модуль DBUS позволяет вам вызвать все, что определено в коде как ‘action’ [действие], то есть (для начинающих) выполнить почти все, на что можно назначить кнопку. Официальная документация по этому поводу ограничивается комментарием в dbus.c, поэтому заставить что-то работать как надо не всегда просто.

Для начала поглядим на srcdir/Compiz/plugins/dbus.c и srcdir/Compiz/plugins/rotate.c. Как вы увидите из второго блока комментариев в верху dbus.c, Дэвид Ривмэн подтверждает, что можно вызвать любое действие. Заголовки у действий следующие:

static Bool rotateLeft (CompDisplay *d, CompAction *action, CompActionState state, CompOption *option, int nOption)

Чтобы выполнить эти действия, дадим Compiz весточку через dbus-send:

dbus-send --type=method_call --dest=org.freedesktop.Compiz
org/freedesktop/Compiz/rotate/allscreens/rotate_left org
freedesktop.Compiz.activate string:’root’ 0x52 string:’x’ int32:1280
string:’y’ int32:1024

Разберем сообщение: --type определяет тип сообщения; --dest, понятное дело, говорит dbus-send, куда посылать сообщение. Далее мы передаем «путь объекта назначения» (то есть «путь» до действия). Действия вызываются по именам, указанным в коде — первые несколько строк объявления действия для «повернуть влево» выглядят так:

o = &rd->opt[ROTATE_DISPLAY_OPTION_LEFT];
o->name = "rotate_left";
o->shortDesc = N_("Rotate Left");
o->longDesc = N_("Rotate left");
o->type =
CompOptionTypeAction;
o->value.action.initiate = rotateLeft;

Итак, имя мы получаем из o->name, а полный «путь» будет выглядеть как /org/freedesktop/Compiz/<имя_расширения>/allscreens/<имя_ действия>.

Итак, имя мы получаем из o->name, а полный «путь» будет выглядеть как /org/freedesktop/Compiz/<имя_расширения>/allscreens/<имя_действия>.

Следующая строка из команды dbus-send, описывающая вращение куба, это тип сообщения (который всегда org.freedesktop.Compiz.activate), за которым следуют пары ключ\значение, описанные Дэвидом в комментарии. При повороте куба налево мы используем три из этих пар — первое дает нам идентификатор окна ‘root’, который всегда равен 82 (или 0х52 в шестнадцатиричной системе) при использовании Xgl; другие два — значения x и y курсора мыши после поворота. Я установил их равными значениям позиции кнопок, чтобы мышь появилась в том месте, где вы ее оставили. Более точно, мы посылаем строку ‘x’, чтобы Compiz понял, что это имя переменной и целое значение 1270, в которое необходимо установить ‘x’.

Чтобы узнать, какие посылать переменные, посмотрите код; просмотрите функцию getIntOptionNamed, используемую для вызова желаемого действия (это значение o->value.action.initiate в объявлении). В rotateLeft внутри rotate.c мы видим o[0].value.i = getIntOptionNamed (option, nOption, «x», pointerX);что можно классифицировать как установку переменной в значение x положения курсора. Вы увидите похожие вызовы для ‘root’ и ‘y’.

Не просто развлечение

Изображение:LXF85-Compiz-11.png
Забейте на список дел и наслаждайтесь вращением кубика…

Теперь вы можете вращать куб и получить больше рабочих столов, но, возможно, пустое пространство на верхней грани куба не дает вам покоя — «Должен же я его использовать…» Что ж, можете поместить там SVG-изображение или их список, чтоб устроить слайд-шоу. Mattdev121 употребил Gconf и поместил туда список дел.

Для этого последнего трюка не нужен никакой новый код Compiz, просто хорошая идея и скрипт Bash. В Ubuntu вам, правда, понадобится еще librsvg2-bin. Скопируйте папку cubetodo из Magazine/Compiz/Utilities в ваш домашний каталог (если хотите поместить ее куда-нибудь в другое место, то придется редактировать скрипт). Откройте терминал и наберите

cd ~/cubetodo
sed -e 's/width=\"1280\"/width=\"YOUR_X_RES\"/g' -e 's/height=\"1024\"/height=\"YOUR_Y_RES\"/g' template_base.svg > template.svg

заменив YOUR_X\Y_RES на соответствующие значения.

Запустите скрипт, набрав ./CubeToDo.sh. Появится Nano, куда можно вписать ваш список неотложных дел. Для его запоминания нажмите Ctrl+O (+Enter), а затем Ctrl+X для выхода — полюбуетесь в терминале на надпись «working», и после короткой паузы изображение на кубе изменится. В каталоге cubetodo находится программа запуска, которую можно добавить на панель или в меню Compiz-start.py.

Что дальше?

Думаете, ваш рабочий стол уже битком набит? Но разработка Compiz продолжается. Появляются интересные расширения, обсуждаемые на форумах, например, Copacity, который меняет определенный цвет в окне на прозрачный, позволяя «устаревшим» приложениям отлично сочетаться с другими. Также ведутся разговоры о проекте Agora Project для создания среды использования 3D-ускорения на рабочем столе. Есть надежда создать новые эффекты и поднять уровень функциональности до Aplle Core Video/Image/Animation в Linux.

Пока OS X и Vista кричат о 3D, Compiz атакует рабочие столы Linux: реорганизует, изменяет, растягивает, перерисовывает и вращает их. В этой революции Linux находится на верном пути.

Ресурсы

Наше спасибо…

Разработчикам: QuinnStorm, iXce, playerX, moppsy, throughnothing, Idontknow12, cyberorg, gandalfn, MacSlow, Michael Callahan, reggaemanu, zootreeves, cornelius, sparX, Athropos, David Reveman и приятным людям из Novell, Ddave, PsyberOne, g14, tommie-lie, Melvil, Jesper, сообществу compiz.net. Этот список неисчерпаем!

Снимки экранов: Who, PlayerX, profoX, Capso.

Настройте свою карту в любимом дистрибутиве

Сообщество Compiz и информация:

Будущие разработки:

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию