HOWTO XGL
Материал из Gentoo Linux Wiki
- Вернуться в раздел руководства
[править] Введение
Xgl это X сервер, который использует OpenGL для прорисовки обьектов. Вместе с композитным оконным менеджерами Compiz или новой версией Metacity позволяет получить превосходное качество 3D и 2D эффектов рабочего стола. Xgl базируется на расширении Mesa, GLX_EXT_texture_from_pixmap, который представлен только в версиях Mesa 6.5 и старше.
На the XOrg mailing list предлагается написать спецификацию GLX_EXT_texture_from_pixmap расширения совместно с NVIDIA. Бета версия драйверов уже выпущеных NVIDIA, версия 9625, поддерживают это расширение, это означает что Xgl уже не нуждается в использовании Compiz на NVIDIA картах, кроме этого использование данной конфигурации приветствуется. Для информации об этом методе использования Xgl, пожалуйста ознакомтесь на en:HOWTO nVidia GL Desktop Effects
Кроме того, Compiz тесно связан с GNOME-компонентами, Xgl и Compiz работают прекрасно во всех окружениях рабочих столов (KDE/GNOME/Xfce/*box). Если Вы всё же не используете GNOME, будте готовы к установке необходимых библиотек и утилит.
| Предупреждение: Данное програмное обеспечение ещё не является стабильным, и хотя оно почти всегда работает, всё же используйте его с осторожностью. |
[править] Системные требования
см. the article on video card support under Xgl.
[править] Установка Xgl
| Примечание: Установка должна быть произведена на системе с работающей X сессией используя эмулятор терминала типа konsole или gterm, выполнение этого условия необходимо для запуска gconf-editor или gset-compiz для конфигурации Compiz в конце установки. |
[править] Требования к програмному обеспечению
Обновите ваше локальное дерево портежей.
emerge --sync
Вам необходима модульная версия XOrg (версия 7.x). Для установки модульной версии XOrg ознакомтесь с официальной Gentoo документацией или соответствующей статьёй wiki.
Модульный XOrg (версия 7.x) был опубликован в стабильной ветке дерева портежей, поэтому вы можете пропустить эту главу, если ваш Gentoo полностью обновлен.
Compiz использует рабочую оболочку GNOME GConf для конфигурации, и некоторые из опций конфигурации будут приведены здесь. Наиболее легким и популярным способом конфигурации является программа gconf-editor, одна из приложений GNOME. Конечно, и менее известная KDE программа KConfigEditor также может использоваться для конфигурации. Правда для этой программы пока не существует ebuild файла, но вы можете загрузить исходный код этой программы с extragear.kde.org. Пожалуй, самый нежелательный из способов — это редактирование gconf конфигурационных файлов вручную, что является скучным и неблагодарным занятием.
Если вы хотите использовать gconf-editor, то его необходимо установить.
emerge -nav gconf-editor
Также вам необходимо установить Subversion с включенной поддержкой webdav. Вы должны отключить флаг nowebdav. Добавьте при необходимости следующую строку в /etc/portage/package.use:
| Примечание: Тут используется двойное отрицание в использовании USE флага. |
echo "dev-util/subversion -nowebdav" >> /etc/portage/package.use
затем,
emerge -nav subversion
[править] Загрузка Portage оверлея
Существуют два метода для создания требуемого оверлея; оверлей можно загрузить используя svn утилиту, или использовать layman утилиту, которая будет управлять оверлеями вместо вас. Используя layman, производить обновление системы проще, так что решать вам. Вне зависимости, что вы будете использовать, результат будет одним и тем же.
[править] Метод по умолчанию: использование Layman утилиты
Если вы ещё не установили Layman, сделайте это сейчас.
emerge -nav layman
Также вам необходимо добавить следующую строку в ваш make.conf.
echo "source /usr/portage/local/layman/make.conf" >>/etc/make.conf
Если вы используете Eix Caching System, удостоверьтесь, что вы используете самую новую версию; старые версии не поддерживают чтение внешних файлов make.conf.
Измените "nocheck" переменную на значение "yes" в конфигурационном файле утилиты layman. (/etc/layman/layman.cfg)
Затем добавьте оверлей с помощью Layman утилиты:
layman -f
layman -a xeffects
если вы используете layman версии 1.0.7 или позже, то оверлеи с неправильными атрибутами будут проигнорированы. Используйте опцию -k для обхода этой ситуации.
layman -k -a xeffects
[править] Альтернативный метод: Создание оверлея вручную
Если вы хотите обслуживать ваш оверлей самостоятельно, то сделайте следующее. Иначе (если используется lanman), вы можете перейти к главе Размаскирование необходимых пакетов.
| Примечание: Лучше всего не смешивать оверлеи и использовать их отдельно друг от друга. |
Перейдите в вашу директорию оверлеев
cd /usr/portage/local/overlays
Загрузите последнюю версию из CoffeeBuzz's Subversion репозитория в директорию 'xgl-coffee'
svn co http://svn.xgl-coffee.org/xgl-coffee/trunk xgl-coffee - не существует
Теперь вы создали оверлей дерева портежей в /usr/local/overlays/xgl-coffee.
Добавьте следующий путь в переменную PORTDIR_OVERLAY в /etc/make.conf.
| Файл: /etc/make.conf |
PORTDIR_OVERLAY="${PORTDIR_OVERLAY} /usr/portage/local/overlays/xgl-coffee"
|
[править] Размаскирование необходимых пакетов
Много пакетов маркированы как нестабильные и должны быть размаскированы, чтобы их можно было установить из дерева портежей Добавьте следующие строки к файлу /etc/portage/package.keywords или /etc/portage/package.unmask
| Файл: /etc/portage/package.keywords |
# Зависимости dev-util/git media-libs/glitz media-libs/mesa x11-apps/mesa-progs sys-apps/man x11-libs/cairo dev-python/pycairo x11-libs/qt x11-misc/util-macros x11-proto/glproto x11-apps/xvinfo x11-apps/xlsclients x11-libs/libwnck x11-misc/xwinwrap virtual/xft gnome-base/gconf gnome-base/libgnomeui x11-libs/gtk+ dev-libs/glib x11-libs/libdrm #XGL пакет x11-base/xgl # старые версии Compiz x11-wm/compiz-quinnstorm x11-misc/compiz-quinnstorm-plugins x11-wm/compiz x11-wm/cgwd x11-misc/csm x11-misc/cgwd-themes x11-misc/cgwd-themes-extra x11-misc/gset-compiz x11-misc/compiz-manager # новая ветка Beryl для Compiz x11-wm/beryl-core x11-plugins/beryl-plugins x11-misc/beryl-manager x11-misc/beryl-settings x11-wm/emerald x11-misc/emerald-themes |
Удостоверьтесь, что флаги glitz, pdf и png включены в переменную USE для Cairo. Возможно, вам понадобится добавить следующую строку к файлу package.use:
| Файл: /etc/portage/package.use |
x11-libs/cairo glitz pdf png |
[править] Установка Xgl
Новые бета драйверы с закрытым исходным кодом от nVidia (версия 1.0.9625) уже включают в себя поддержку XGL. Поэтому не нужно более никаких установок. Если вы не хотите использовать новейшие бета драйвера, следуйте к главе "не-nVidia пользователи". Данный способ работает на nVidia картах, при этом установка и использование новых nVidia драйверов намного проще. Если вы хотите использовать новейшие бета драйвера, перейдите к главе "nVidia Пользователи".
[править] Не-nVidia пользователи
Во-первых, вы должны установить Cairo. Используйте опцию --oneshot, чтобы не записывать этот пакет в список world (не захламляйте свой world список).
# emerge --oneshot --ask --verbose cairo
Переинсталируйте pango и gtk+ с использованием новоустановленного Cairo пакета.
# emerge --oneshot --ask --verbose pango gtk+
Далее у вас есть выбор между beryl и compiz ветками:
- compiz — это оригинальное приложение, написанное Давидом Равеманом (David Reveman) из Новел (Novell). Это приложение уже включено в дерево портежей.
- beryl — это снимок Quinnstorm's Ubuntu кодовой базы с некоторыми экспериментальными плагинами. Формально эта ветка известна под названием compiz-quinnstorm. Использует emerald как window decorator. Это отдельный пакет, не включеный в дерево портежей.
| Примечание: В современное дерево портежей уже включен beryl и многие из его плагинов, так что пользоваться оверлеями для его установки больше нет необходимости. |
Проверьте, что флаги dbus и svg включены в переменную USE для Compiz. Возможно, вам потребуется добавить следующую строку в package.use:
| Файл: /etc/portage/package.use |
x11-wm/compiz dbus svg |
Проверьте, что пакеты glproto и libdrm установлены. Установите их, если это требуется:
# emerge --ask --verbose --oneshot --noreplace glproto libdrm
В конечном итоге вы должны будете установить Xgl и Mesa, которые автоматически скомпилируют и установят Compiz, а также все его плагины и Xgl сервер.
# emerge --ask --verbose --oneshot --noreplace mesa
Опция 1: Для использования vanilla compiz:
# emerge --ask --verbose xgl compiz
Опция 2: Для использования beryl мета пакета:
# emerge --ask --verbose xgl beryl-core
| Примечание: Установка beryl также устанавливает декоратор окон emerald и его темы. Таким образом emerald не надо устанавливать отдельно. |
| Примечание: NVIDIA пользователи, пожалуйста переустановите nvidia-drivers после установки Xgl |
| Примечание: Если не удается скомпилировать xgl, проверьте заплатку на
http://forums.xgl-coffee.org/viewtopic.php?t=178 |
| Примечание: Если не удается скомпилировать beryl из за dbus, попробуйте обновить пакет dbus |
| Примечание: Если не удается скомпилировать xgl и компиляция обрывается на fbmmx.c или fbedge.c, попробуйте удалить флаг "-fforce-addr" из переменной CFLAGS. Также ознакомьтесь с документацией на форуме |
Если всё прошло удачно, то Cairo должен присутствовать в системе как зависимость.
| Примечание: Для следующей проверки необходим установленый пакет gentoolkit. |
Проверьте с помощью следующей команды
# equery d -o -p cairo
| Предупреждение: Если команда не возвращает никаких пакетов, значит что-то прошло неправильно! |
После произведенных действий вы должны получить функционирующую установку Xgl. Пожалуйста, ознакомьтесь с Глава работающий Xgl.
[править] nVidia пользователи
nVidia драйвер версии 9625 BETA и старше содержат XGL и AIGLX-подобные расширения и могут быть использованы совместно с другими композитными менеджерами окон. см. en:HOWTO nVidia GL Desktop Effects для более детальной информации.
[править] Обновление Xgl
Из-за быстрой разработки Xgl и Compiz оверлей обновляется как минимум один раз в неделю. Используйте один из приведённых методов для обновления оверлея.
[править] Обновление с помощью Layman утилиты
Обновление оверлея с помощью Layman утилиты очень просто:
layman -s xeffects
[править] Обновление вручную
Для обновления оверлея вручную перейдите в директорию оверлея и введите ./svnup.sh. Этот скрипт также выведет список изменений.
cd /usr/local/overlays/xgl-coffee/ ./svnup.sh
[править] Запуск Xgl
[править] Конфигурация Compiz
Для начала надо сконфигурировать Compiz и его плугинов. Если никакие плагины не указаны, тогда окна останутся без декораций! (не будет кнопок minimize/maximize/close, невозможно будет изменять размеры окна, ничего вообще толком не будет.)
Существуют два пути указания плагинов. Вы можете указать плагины в командной строке или использовать оконный редактор конфигурации например с помощью программ gconf-editor или gset-compiz. Но вы не можете использовать оба способа одновременно! Если gconf указан в коммандной строке, тогда Compiz проигнорирует все другие плагины указанные в коммандной сторке и возьмёт список плагинов из вашей конфигурации gconf.
Таким образом если Вы впервые запускаете Xgl и Вы хотите конфигурировать в оконном редакторе, наступило время сделать это, до того как Вы выйдете из Вашей X сессии.
[править] Способ "По умолчанию": Использование gconf-editor
# gconf-editor
Перейдите в apps --> compiz --> general --> allscreens --> options и отредактируйте узел active_plugins code> находящийся справа.
Примечание: Если в gconf-editor нет вкладок Сompiz, тогда это можно исправить таким образом:
# export GCONF_CONFIG_SOURCE="xml:merged:/etc/gconf/gconf.xml.defaults" # gconftool-2 --makefile-install-rule /etc/gconf/schemas/compiz.schemas В случае отсутствия файла /etc/gconf/schemas/compiz.schemas проверте что compiz собран USE флагом "gnome" Если при пересборке compiz вываливаются ошибки компиляции libcm , то попробуйте выполнить # eselect opengl set nvidia --impl-headers |
[править] Способ "По умолчанию" для compiz-quinnstorm: Использование csm
# csm
Плагины могут быть активированы кликая в checkbox после имени. Индивидуальная конфигурация плагинов осуществляется после щелчка мышью на имени плагина.
Примечание: Compiz-quinnstorm поставляется вместе с Compiz Manager (compiz-manager code>). Это оконное приложение находящееся в системной панели и включает в себя Compiz Settings Manager (
|
# compiz-manager or (if any dbus problem) : # dbus-launch compiz-manager
[править] Альтернативный способ: Испльзование gconftool-2
# gconftool-2 -s /apps/compiz/general/allscreens/options/active_plugins "[gconf,decoration,wobbly,fade,minimize,cube,switcher,move,resize,place,rotate,zoom,scale]" -t list --list-type=string
Укажите активные плагины внутри квадратных скобок.
[править] Альтернативный способ: Использование gset-compiz
| Предупреждение:
gset-compiz больше не пытается использовать все возможности Compiz. Используйте лучше gconf-editor или более новые программы для возможностей которыми не располагает gset-compiz. |
# gset-compiz
Плагин можно активировать поставив галочку сразу возле его имени. Конфигурация индивидуальных настроек плагина доспуна после нажатия кнопки Plugins находящейся сразу под меню.
Как минимум, потребуются пакеты gconf и decoration. Также, если Вы хотите включить все доступные эффекты, надо также добавить wobbly, fade, switcher, move, resize, place, minimize, cube, rotate, zoom, и scale. Из имени пакета Вы сами можете догадаться, что выполняет каждый из плагинов, так что не торопитесь включать их все. Это как предпочтения "сладостей для глаз", установите плагины move и resize - у Вас появится возможность работать с их функциями.
[править] Using Quinnstorm's compiz & cgwd
Quinnstorm's new compiz doesn't use gconf plugin anymore (so settings). To use it, replace any instance of compiz --replace gconf code> found in this document with dbus-launch compiz --replace dbus csm code>. And set it by csm code> or dbus-launch csm code>.
Quinnstorm's new window decorator must be called instead of gnome-window-decorator code> in order to function. If you chose to emerge cgwd, just replace any instance of gnome-window-decorator code> found in this document with dbus-launch cgwd code>.
[править] Оконный режим
Запустив Xgl таким способом мы создадим новое окно с включенным Xgl сервером. Это отличный способ протестировать правильность установки прежде чем запускать XGL в полноэкранном режиме.
Чтобы попробовать его работу в оконном режиме при уже запущенном X сервере:
| Code: Для ati пользователей |
Xgl :1 -ac -accel glx:pbuffer -accel xv:pbuffer -fp /usr/share/fonts/misc,/usr/share/fonts/other_fonts |
| Code: Для nVidia пользователей |
Xgl :1 -ac -accel glx:pbuffer -accel xv -fp /usr/share/fonts/misc,/usr/share/fonts/other_fonts |
| Примечание: Обсуждение использования pbuffer или fbo как аргументов accel, можно почитать здесь http://forums.gentoo.org/viewtopic-t-455153-highlight-.html |
| Примечание: Xgl не будет считывать значение FontPath из xorg.conf, по-этому, лучше в конце строки после опции -fp прописать пути к шрифтам разделяя их запятой. Используйте этот скрипт для получения путей к шрифтам прописанным в файле xorg.conf: |
grep -i fontpath /etc/X11/xorg.conf | egrep -v "[:space:]*#" | sed "s/.\+\"\(.\+\)\"/\1,/g" | xargs echo | sed "s/\ //g" | sed "s/,\$//"
Протестируйте Вашу конфигурацию:
Запустите композитный оконный менеджер (compiz or compiz-quinnstorm), запустите декоратор окон (gnome-window-decorator or cgwd) и запустите приложение (xterm).
| Code: Для большинства: Если Вы используете compiz совмесно с gnome-window-decorator
Учтите что название gnome-window-decorator изменилось на gtk-window-decorator 22 Сентября 2006 года. |
LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ \ DISPLAY=:1 compiz gconf DISPLAY=:1 gnome-window-decorator DISPLAY=:1 xterm |
| Code: Альтернатива 1: если Вы используете compiz-quinnstorm совмесно с gnome-window-decorator |
LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ \ DISPLAY=:1 dbus-launch compiz dbus csm DISPLAY=:1 gnome-window-decorator DISPLAY=:1 xterm |
| Code: Альтернатива 2: Если вы используете compiz-quinnstorm с cgwd |
LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ \ DISPLAY=:1 dbus-launch compiz dbus csm DISPLAY=:1 dbus-launch cgwd DISPLAY=:1 xterm |
Если всё прошло успешно, мы можем начать конфигурировать Вашу систему для запуска Xgl с Вашим графическим менеджером аутентификации. Следуйте инструкциям которые помогут Вам настроить менеджер аутентификации. Это последний шаг необходим для удобного использования Xgl.
[править] startx (Для пользователей startx)
Если вы обычно загружаетесь в консоль и Xorg сервер запускается через startx, а .xinitrc загружает ваш менеджер окон на DISPLAY:0, то вам нужно: написать скрипт startxgl для запуска сервера Xgl, а так же файл .xglinitrc для загрузки менеджера окон на DISPLAY:1. Эти действия не изменят вашей текущей конфигурации и вы сможете в любой момент вернутся в нормальный Xorg сервер.
1) Скопируйте startx (cp /usr/bin/startx /usr/local/bin/startxgl code>) и отредактируйте 2 строки:
| Файл: /usr/local/bin/startxgl |
## userclientrc=$HOME/.xinitrc userclientrc=$HOME/.xglinitrc ## xinit $clientargs -- $serverargs -deferglyphs 16 & # ATI xinit $clientargs -- /usr/bin/Xgl :1 $serverargs -ac -accel xv -accel glx:pbuffer -deferglyphs 16 & # NVIDIA xinit $clientargs -- /usr/bin/Xgl :1 $serverargs -ac -accel xv -accel glx:fbo -deferglyphs 16 & |
2) создайте файл ~/.xglinitrc (vi ~/.xglinitrc code>)
| Файл: ~/.xglinitrc |
sleep 2 # give Xgl some extra time to start DISPLAY=:1 KDEWM=compiz-decorator startkde |
| Примечание: Пользователи Gnome должны вписать gnome-session вместо startkde и WINDOW_MANAGER вместо KDEWM. Пользователи других DM вписывают соответствующие им команды запуска. Для уточнения проверте ваш ~/.xinitrc. |
3) создайте файл compiz-decorator (vi /usr/local/bin/compiz-decorator code>)
| Файл: /usr/local/bin/compiz-decorator |
## Start compiz or compiz-quinnstorm ## compiz --replace gconf & ## dbus-launch compiz --replace dbus csm & compiz --replace gconf & sleep 2 ## Start gnome-window-decorator or cgwd ## gnome-window-decorator & ## dbus-launch cgwd & gnome-window-decorator & |
| Примечание: Команды для запуска и использования compiz-quinnstorm и cgwd в скрипте закоментированны. Если вы хотите пользоваться ими то незабудте закоментировать текущие |
Смените права доступа на /usr/local/bin/compiz-decorator что бы сделать его исполняемым:
# chmod +x /usr/local/bin/compiz-decorator
4) Для запуска вашего оконного менеджера в XOrg используйте startx code>, для запуска в Xgl используйте startxgl code>.
Скрипты тестировались на связке ATI и KDE. --Ash 17:48, 11 Сентября 2006 (UTC)
[править] XDM (Базовая графическая система аутентификации)
Измените ссылку на X сервер:
| Файл: /etc/X11/xdm/Xservers |
:0 local /usr/bin/Xgl vt7 |
[править] KDM (для пользователей KDE)
Замените строку с ServerCmd code> в kdmrc на одну из следующих:
| Файл: /usr/kde/<your version>/share/config/kdm/kdmrc |
# NVidia Command ServerCmd=/usr/bin/Xgl -br -ac -accel glx:pbuffer -accel xv # ATI Command ServerCmd=/usr/bin/Xgl -br -ac -accel glx:pbuffer -accel xv:pbuffer |
Вы также должны поменять занчение ServerTimeout code> так как Xgl запускается немного дольше, чем нормальный Х сервер:
| Файл: /usr/kde/<your version>/share/config/kdm/kdmrc |
ServerTimeout=30 |
Если kdm не смог загрузится, измените значение ServerTimeout на 600. Учтите, что в этом случае время загрузки Xgl значительно увеличится.
Не используйте скрипт /usr/kde/3.5/share/config/kdm/Xstartup для запуска Compiz. Для его выполнения нужны права пользователя root.
Скопируйте скрипт в другое место, например сюда:
| Файл: /usr/local/bin/compiz-decorator |
## Start compiz or compiz-quinnstorm ## compiz --replace gconf & ## dbus-launch compiz --replace dbus csm & compiz --replace gconf & sleep 2 ## Start gnome-window-decorator or cgwd ## gnome-window-decorator & ## dbus-launch cgwd --replace & gnome-window-decorator --replace & |
| Примечание: Команды для запуска и использования compiz-quinnstorm и cgwd в скрипте закоментированны. Если вы хотите пользоваться ими то незабудте закоментировать текущие |
Сделайте вновь созданный скрипт /usr/local/bin/compiz-decorator исполняемым:
# chmod +x /usr/local/bin/compiz-decorator
Далее измените:
| Файл: /etc/env.d/99kde-env |
KDEWM=compiz-decorator |
И наконец, выполните комманду:
# env-update
Теперь после перезагрузки или выполнения комманды /etc/init.d/xdm start вы запустите полнофункциональный Xgl со всеми эффектами без пользовательского вмешательства и аутентификацией с помощью KDM.
[править] GDM (для пользователей GNOME)
Вы должны сделать 3 вещи, чтобы заставить Xgl работать с GDM и использовать Compiz для автоматической загрузке при авторизации пользователя.
- Сконфигурируйте GDM для Xgl с отложенным запуском, чтобы при запуске нельзя было сказать, что она не работает
- Сконфигурируйте GDM для использования с Xgl-сервером
- Установите сессию GNOME для автоматического запуска из Compiz
| Примечание: Конфигурирование gdm для отложенного запуска Xgl доступно с gdm-2.14.1 и поздних версий. Если Вы используете раннюю версию, начинте с шага 2, но, возможно, Вам не удастся заставить gdm работать с Xgl. Также использование gdmsetup для конфигурирования gdm на испольльзоваине Xgl-сервера (Раздел 2a) может быть недоступно для версий gdm ранее 2.14.0. Если недоступны необходимые Вам функции, самостоятельно отредактируйте конфигурационный файл GDM (Раздел 2b). |
[править] Конфигурирование Gdm на отложенный запуск для запуска Xgl
Gdm сконфигурирована по умолчанию на завершение (kill) X-сервера, если загрузка заняла более 10 секунд. К сожалению, новые версии Xgl могут загружаться дольше. Пользователи Xgl в Gentoo, могут сконфигурировать Gdm (пример по версии 2.14.1) на ожидание более 10 секунд.
# emerge --ask --verbose >=gdm-2.14.1
- Добавьте/измените следующие команды секции
code> файла /etc/X11/gdm/custom.conf. Строка:
| Файл: /etc/X11/gdm/custom.conf |
GdmXserverTimeout=30 |
- Если /etc/X11/gdm/custom.conf не существует, попробуйте /etc/X11/gdm/gdm.conf-custom или /etc/X11/gdm/gdm.conf.
[править] Конфигурирование Gdm для использования сервера Xgl
[править] Использование gdmsetup
- Для начала сделайте резервную копию файла gdm.conf
- cp /etc/X11/gdm/gdm.conf /etc/X11/gdm/gdm.conf.bak
- Запустите gdmsetup
- Выберите раздел Security
- Щёлкните кнопку Configure X Server, расположенную снизу-справа раздела
Для начала мы удалим значения для стандартного X-сервера
- Нажмите по стандартному серверу, ктороы находится в списке Servers to Start
- Нажмите Remove Button
Сейчас мы создадим значения для сервера Xgl
- Нажмите кнопку Add/Modify
- Задайте использование нового сервера VT 1. Используйте Standard для Server опцию — она отображает, какой профиль использовать для сервера, в идеале мы должны создать новый "Xgl"-профиль, а в настоящее время при помощи gdmsetup это сделать невозможно, так что отредактируем настройки для профиля Standard. Не воодите здесь каких-либо опций. Нажмите Ok по завершении.
- В Server Settings измените Server Name на "Xgl"
- Введите команду Xgl в поле Command, например, для пользователей ATI:
/usr/bin/Xgl :1 -ac -accel glx:pbuffer -accel xv:pbuffer
- NVIDIA users should use:
/usr/bin/Xgl -br -ac -accel glx:pbuffer -accel xv
- Измените в выпадающем списке Launch значение на Greeter
- Установите Logins are handled by this computer
- Установите Flexible (on demand)
- Save и Close
- Перезапустите gdm
[править] Ручная настройка
- Для начала сделайте резервную копию файла gdm.conf
cp /etc/X11/gdm/gdm.conf /etc/X11/gdm/gdm.conf.bak
- Теперь откройте /etc/X11/gdm/gdm.conf в текстовом редакторе и найдите секцию
code>. Она должна быть где-то в конце файла. - Закомментируйте
0=Standard code> и добавьте две новых строки0=inactive code> и1=Xgl code>. - Добавьте информацию о сервере для Xgl сервера, не забудьте заменить команду Xgl сервера на корректную! Ниже приведен пример для ATI карт.
Измененный /etc/X11/gdm/gdm.conf:
[servers] #0=Standard 1=Xgl # Definition of the xgl X server. [server-Xgl] name=Xgl command=/usr/bin/Xgl :1 -ac -accel xv:pbuffer -accel glx:pbuffer flexible=true chooser=false handled=true priority=0
- Перезапуск gdm
Примечание: For i810 users (not necessarly i915; this would kill my xorg sessions, I had to use the ATI command), the command for the above should be:[server-xgl] name=Xgl server command=/usr/bin/Xgl -accel xv -accel glx:pbuffer -accel xv:pbuffer -ac -audit 0 -br -dpms -dpi 72 flexible=true |
[править] Via xsession
Вы можете добавить другую сессию для Xgl на экран :1 (оставив стандартный сервер на :0). Это второй шаг установки и, ИМХО лучший вариант. Во-первых - создайте файл для запуска Xgl и, во-вторых - создайте новый файл xsession.
Создание нового файла startxgl.sh в /usr/bin который и будет запускать Xgl.
vim /usr/bin/startxgl.sh
И добавление одной из следующих опций:
- NVIDIA (пользующиеся GNOME)
#!/bin/bash Xgl -fullscreen :1 -audit 0 -ac -br -accel glx:pbuffer -accel xv:fbo & sleep 2 && DISPLAY=:1 gnome-session
- NVIDIA (пользующиеся KDE)
#!/bin/bash Xgl -fullscreen :1 -audit 0 -ac -br -accel glx:pbuffer -accel xv:fbo & sleep 2 && DISPLAY=:1 startkde
- ATI and Intel (пользующиеся GNOME)
#!/bin/bash Xgl -fullscreen :1 -audit 0 -ac -br -accel glx:pbuffer -accel xv:pbuffer & sleep 2 && DISPLAY=:1 gnome-session
- ATI and Intel (пользующиеся KDE)
#!/bin/bash Xgl -fullscreen :1 -audit 0 -ac -br -accel glx:pbuffer -accel xv:pbuffer & sleep 2 && DISPLAY=:1 startkde
Создание нового файла xsession:
| Файл: /usr/share/xsessions/xgl.desktop |
[Desktop Entry] Encoding=UTF-8 Name=Xgl Comment=Start an Xgl Session Exec=/usr/bin/startxgl.sh Icon= Type=Application |
Сейчас вы можете выбрать новую сессию в меню опций gdm. Options -> Select Session
Польза в том, что обычный XOrg сервер не заменится. Итак, когда вы "остановите" ваш Xgl вы можете вернуться к нормальный XOrg сервер.
[править] Установка Compiz в среде GNOME (вместо Metacity)
Ниже приведен небольшой скрипт, который можно поместить в /usr/bin/. Полезен в том случае, если Xgl используется не все время. Удалите строку с setxkbmap или измените ее в соответствие с вашей раскладкой клавиатуры.
| Файл: /usr/bin/compizrc |
#!/bin/bash
#
# Запуск compiz в gnome-session
#
if [ `ps -A -o comm | grep -c '^Xgl$'` == "1" ]; then
DISPLAY=:1 LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace gconf &
DISPLAY=:1 gnome-window-decorator &
# DISPLAY=:1 setxkbmap -model pc105 -layout it -variant basic # Измените в соответствие со своими нуждами или оставьте строку закомментированной
# Можно попробовать и так, если нужна возможность смены раскладки
# setxkbmap -model pc105 -layout "us,ru(winkeys)" -variant winkeys -option "grp:alt_shift_toggle,grp_led:scroll"
else echo "${0}: Ошибка: Compiz и g-w-d не запущены. А Xgl запущен?"
fi
|
| Файл: /usr/bin/compizrc.modified |
#!/bin/bash
#
# Запуск compiz в gnome-session gnome-session
#
if [ `ps -A -o comm | grep -c '^Xgl$'` == "1" ]; then
# Для старых версий
# DISPLAY=:0 LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace gconf &
# Для Compiz-Quinnstorm с csm
DISPLAY=:0 LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace dbus csm &
DISPLAY=:0 dbus-launch cgwd --replace &
# DISPLAY=:0 setxkbmap -model br-abnt2 -layout br -variant br
else echo "${0}: Ошибка: Compiz и cgwd не запущены. А Xgl запущен?"
fi
|
| Code: Разрешаем запускать скрипт |
|
chmod 755 /usr/bin/compizrc |
- После входа в GNOME, запустите System->Settings->Sessions, идите на 3ю вкладку Startup Programs и нажмите на кнопку Add. Укажите пусть к только что созданному скрипту (к примеру, /usr/bin/compizrc).
- После выхода/входа, Compiz должен запуститься, но никаких эффектов и оформлений мы не увидим, потому что ветка Compiz в gconf только что была создана без плагинов.
- Запускаем редактор настроек, идем в ветку apps/compiz/general/allscreens/options и меняем значение ключа active_plugins на gconf decoration wobbly fade minimize cube rotate zoom scale move resize place menu switcher
- Если ключ не существует, то создаем его вручную
- После перезагрузки Xgl Server будет доступен в GDM & gnome-session.
[править] Xsession (Modifying startx)
| Примечание: This is for NVIDIA users. |
| Предупреждение: This currently will not work for ATI users because of the display issues, requiring to be run on DISPLAY=:1. |
| Примечание: I use simmilar configuration (see startx section) on ATI. Consider /usr/bin/Xgl :1 instead of /usr/bin/Xgl and starting Gnome at :1 as well, if DISPLAY:0 is problematic. --Ash 17:57, 11 September 2006 (UTC) |
Copy /usr/bin/startx to /usr/bin/startxgl and change the following line towards the end of the file:
| Файл: /usr/bin/startxgl |
xinit $clientargs -- $serverargs -deferglyphs 16 & to xinit $clientargs -- /usr/bin/Xgl $serverargs -ac -accel xv -accel glx:pbuffer -deferglyphs 16 & |
This does not start Compiz so create a small start script and add it to the gnome-session manager (Once GNOME is up. The first time, you will have to open a terminal and call the script manually.)
| Файл: /usr/bin/compizrc |
#!/bin/bash
#
# Start compiz within gnome-session
#
if [ `ps -A | grep Xgl | wc -l` == "1" ]; then
LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace gconf &
gnome-window-decorator &
# setxkbmap -model pc105 -layout it -variant basic # Change according to your needs, and uncomment if needed
# Or like that, if you need to switch between layouts.
# setxkbmap -model pc105 -layout "us,ru(winkeys)" -variant winkeys -option "grp:alt_shift_toggle,grp_led:scroll"
fi
|
Примечание: This should start the desktop environment configured via XSESSION code> in
|
[править] Xfce4
[править] With xfce4-session
xfce4-session is installed by default as part of the xfce4 meta-package. If you installed xfce4 this way, the following will work.
First, it is necessary to create a script that will start Compiz and gnome-window-decorator with the correct libraries and switches.
| Файл: /usr/bin/compizrc |
LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib compiz --replace gconf & gnome-window-decorator |
| Code: Make the script executable |
chmod 755 /usr/bin/compizrc |
Now, edit the xfce4-session settings to point to this rather than xfwm4.
| Файл: /etc/xdg/xfce4-session/xfce4-session.rc |
[Failsafe Session] Count=4 Client0_Command=compizrc Client0_PerScreen=False Client1_Command=xfce4-panel Client1_PerScreen=True Client2_Command=xftaskbar4 Client2_PerScreen=True Client3_Command=xfdesktop Client3_PerScreen=False |
Примечание: Instead of editing system-wide file you may also add above section to ~/.config/xfce4-session/xfce4-session.rc code> file. Note also that you may need to delete content of the
|
Finally, create a script to start Xgl with Xfce4.
| Файл: /usr/bin/startxgl for NVIDIA |
#!/bin/bash Xgl -ac -accel xv:fbo -accel glx:pbuffer & xfce4-session |
| Файл: /usr/bin/startxgl for ATi |
#!/bin/bash Xgl -ac -accel xv:pbuffer -accel glx:pbuffer & xfce4-session |
| Code: Make the script executable |
chmod 755 /usr/bin/startxgl |
You will notice that xfce4-panel is now transparent, just like if you were using xfwm4's compositor. The pager will be distorted, but otherwise everything works beautifuly. Windows even minimize to the correct spot on the taskbar.
[править] Without xfce4-session
If you compiled a minimal Xfce (without xfce4-session, xffm4, etc.), then you can use this altered startxgl script from the gnome script above:
#!/bin/bash echo ">Starting XGL at Display: $1" echo "========= XGL ============" Xgl :$1 -ac -accel xv -accel glx:pbuffer & sleep 3 echo "======= COMPIZ ===========" DISPLAY=:$1 LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace switcher decoration wobbly fade minimize cube rotate zoom scale move resize place & sleep 3 echo "======= XFCE ============" DISPLAY=:$1 xfce-mcs-manager DISPLAY=:$1 gnome-window-decorator & DISPLAY=:$1 xftaskbar4 & DISPLAY=:$1 xfdesktop & DISPLAY=:$1 exec xfce4-panel
Again, xfce4-panel will be transparent as if you had the X.org composite extension turned on (but you don't) or if you use xfce4-svn, and the pager will be distorted. Everything else should be fine.
[править] With startxfce4
To do it the old fashioned, or 'normal' way via startx/startxfce4 I did the following. First, startxfce4 shouldn't be called I don't think. just use an .xinitrc in your homedir and startx.
| Файл: ~/.xinitrc |
#!/bin/sh /usr/bin/startxfce4 |
Now as root, we create compizrc code>, like above. Note however that for me, it worked best/only without the DISPLAY variable.
| Файл: /usr/bin/compizrc |
#!/bin/bash LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace gconf > ~/compiz.log 2>&1 & sleep 1; gnome-window-decorator > ~/gnome-window.log 2>&1 & |
Obviously the output redirections are optional (but handy for debugging). The sleep 1; might also be removed to speed things up. If things go TO fast however, you might get in trouble though. Don't forget to chmod 755 /usr/bin/compizrc
Lastly we need to use this new compizrc code> instead of the default xfce4 window manager.
Again, as root edit /etc/xdg/xfce4-session/xfce4-session.rc and replace xfwm4 code> with compizrc code>
| Файл: /etc/xdg/xfce4-session/xfce4-session.rc (old) |
Client0_Command=xfwm4 |
| Файл: /etc/xdg/xfce4-session/xfce4-session.rc (new) |
Client0_Command=compizrc |
Now only one thing is left, start Xgl. As above you can copy startx in /usr/bin/startx to /usr/bin/startxgl and make the following change:
| Файл: /usr/bin/startxgl (old) |
|
xinit $clientargs -- $serverargs -deferglyphs 16 & |
| Файл: /usr/bin/startxgl (new) |
|
xinit $clientargs -- /usr/bin/Xgl -ac -accel xv -accel glx:pbuffer $serverargs -deferglyphs 16 & |
Примечание: Todo: Make Client0_Command code> depend on wether startx or startxgl is beeing used as 3D apps don't appear to work as they should and switching back to the 'old way' is required.
|
Edit: it seams that when using the startxfce4 script, the /etc/xdg/xfce4-session/xfce4-session.rc file (and the .xinitrc code>) get ignored thus starting a non Xgl desktop. Making 'switchin code>' not needed. startxfce4 for oldschool, startxgl for new style
[править] Entrance
- Emerge latest entrance:
echo "=x11-misc/entrance-0.9.0.007 ~x86" >> /etc/portage/package.keywords emerge -av entrance
- Use the ecore_config utility to change the xserver string (choose according to your video card):
# ATI ecore_config -k "/entranced/xserver" -s "/usr/bin/Xgl -ac -accel xv:pbuffer -accel glx:pbuffer -nolisten tcp" -c /etc/entrance_config.cfg # NVIDIA ecore_config -k "/entranced/xserver" -s "/usr/bin/Xgl -ac -accel xv:fbo -accel glx:pbuffer -nolisten tcp" -c /etc/entrance_config.cfg
- Restart entrance.
[править] Qingy
It is quite easy to change Qingy to start Xgl instead of a regular X server. All you need to do to make it start Xgl is change 2 lines in /etc/qingy/settings
| Файл: /etc/qingy/settings |
... # x_server = "/usr/X11R6/bin/XFree86" x_server = "/usr/bin/Xgl" # x_args = "-nolisten tcp" x_args = "-ac -accel xv -accel glx:pbuffer -nolisten tcp" ... |
Now Qingy should start Xgl instead of regular X. To make KDE and GNOME load Compiz you need to export a variable. KDEWM for KDE and WINDOW_MANAGER code> for GNOME. It is easiest to do this in /etc/X11/Sessions.
You need to have followed the instructions for adding plugins to gconf-editor. Then make a /usr/bin/compizrc as shown and chmod +x it.
| Файл: /usr/bin/compizrc |
#!/bin/bash LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib compiz --replace gconf & sleep 2 gnome-window-decorator & setxkbmap -model itouch -layout gb & ## Change/Remove as appropriate |
Then edit the appropriate file (or both) in /etc/X11/Sessions
For KDE:
| Файл: /etc/X11/Sessions/kde-3.5 |
#!/bin/sh export KDEWM="/usr/bin/compizrc" exec /usr/kde/3.5/bin/startkde |
Or for GNOME add this to the top of the file :
| Файл: /etc/X11/Sessions/Gnome |
#!/bin/sh export WINDOW_MANAGER="/usr/bin/compizrc" ... |
For Xfce4 edit /etc/xdg/xfce4-session/xfce4-session.rc as shown in a previous section.
Hopefully Qingy should now start Xgl and Compiz instead of X and some other WM.
[править] Generic startxgl script
There is a generic startup script in the overlay. For usage instructions start it without arguments.
Currently it support Xfce, Xfce-svn, GNOME and KDE.
cd /usr/local/overlays/xgl-coffee ./startxgl
[править] Возможные проблемы
На данный момент Xgl не совсем корректно работает с некоторыми приложениями, точнее с играми. Для примера возьмем Quake3 в полноэкранном режиме: На одном из форумов (к сожалению я потерял ссылку на него) я нашел любопытный ход (но он применим только к Quake's based играм, по моему)
quake3-bin +set r_GLdriver /usr/lib/opengl/xorg-x11/lib/libGL.so
Однако, этот способ не дает полноценного полного экрана :(. В результате долгих размышлений и поисков для себя я выбрал немного другой путь, надеюсь он поможет еще кому-то http://forums.gentoo.org и сам файлик xlaunch Я поместил его в /bin и для запуска того же Qake3 использую
xlaunch /opt/quake3/quake3.x86
В результате стартует отдельный X сервер на :1 (в смысле свободный номер) с Quake3, после выхода из которого (Quake3) он закрывается и опять переключается на :0 (с которого начинали)
[править] Weblinks
Эта часть была перемещена на en:HOWTO XGL/Weblinks.
В драйверах от NVIDIA 169 версии достаточно вписать в файл строку Option"AddARGBGLXVisuals" "True" как показано ниже.
Section "Device"
Identifier "Videocard0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce 8500 GT" Option "AddARGBGLXVisuals" "True"
EndSection
Проблемы с запуска Emerald через Compiz
COMPIZ & EMERALD AUTOSTART
Создайте /usr/bin/compizrc.sh и впишите внего
#compiz --replace ccp --sm-disable
фаил /usr/bin/compizrc.sh вставьте в автозагрузку.
