| 论坛注册| 加入收藏 | 设为首页| RSS
Google
您当前的位置:首页 > Linux频道 > Linux入门与提高 > 安装与配置

在 Fedora Core 5 上体验 Aiglx 和 Xgl & Compiz

时间:2006-06-30 13:29:42  来源:Linux联盟收集  作者:Linux联盟收集

在Fedora Core 5上体验 Aiglx 和 Xgl & Compiz rxPLinux联盟

作者:aaccddrxPLinux联盟
来自:LinuxSir.orgrxPLinux联盟
摘要:rxPLinux联盟
Aiglx是一个旨在为标准桌面启用GL加速功能的项目,目的在于通过小幅度修改X server、使用添加新协议支持的Mesa升级版和带有混合管理器版本的metacity,让用户稍作改动即可在桌面上使用GL效果,随意开启、关闭该功能而无需替代使用中的X server。rxPLinux联盟

Xgl是基于OpenGL上的X服务架构,现在处于开发阶段,很多重要的部分还未完成。Xglx是目前唯一使用这种结构的X服务器,它需要在一个已有的X服务器,只用于测试和开发目的。Xegl是基于Xgl架构的新一代X服务器,它将使用EGL扩展独立地运行在OpenGL上rxPLinux联盟

本文简要介绍了Aiglx和Xgl的特点和功能,以及在Fedora Core 5上从源码编译、安装、配置Aiglx和Xgl的一种方法。希望为对此有兴趣的FC5用户提供一种尝试的途径。rxPLinux联盟

一 写在前面:rxPLinux联盟

⒈什么是Xgl?rxPLinux联盟
http://www.freedesktop.org/wiki/Software_2fXglrxPLinux联盟
Xgl是基于OpenGL上的X服务架构,现在处于开发阶段,很多重要的部分还未完成。Xglx是目前唯一使用这种结构的X服务器,它需要在一个已有的X服务器,只用于测试和开发目的。Xegl是基于Xgl架构的新一代X服务器,它将使用EGL扩展独立地运行在OpenGL上。rxPLinux联盟

它有哪些新的特性呢?rxPLinux联盟

基于OpenGL的X层,使用混合桌面,开启通往新功能、新机会的大门。以下是一些可能出现的功能,其中一些现在已经实现。我们要破除基于OpenGL的X中看不中用的迷信。rxPLinux联盟

①加倍窗口显示分辨率,应用程序可以用特定的分辨率渲染窗口,而与桌面的分辨率不同。想像一下梯度背景,这样的一个窗口或材质只有几个色素,却以1600x1200或更大的尺寸显示。rxPLinux联盟

②快速、简单的屏幕旋转、翻转、摇动、放大。rxPLinux联盟

③高级字体渲染,包括使用材质和分段程序的及时轮廓字体渲染。rxPLinux联盟

④模拟硬件层面,历史悠久的工作站图形功能可以用材质混合实现rxPLinux联盟

⑤全屏颜色处理,包括伽玛纠正、对比增强、模糊、加亮等等。rxPLinux联盟

⑥同一屏幕上混合像素深度,经重定向,上层窗口可以具有不同的色深(8、16、24、32bpp)。例如:XTerms可以8bpp(只需32bpp图像所用texmem的1/4)创建,用颜色查找表显示(texel 查找分段程序);rxPLinux联盟

⑦每窗口任意色图(texel查找分段程序);rxPLinux联盟

⑧替代窗口色彩空间,“视频”窗口可以存储为YCbCr(比RGB小),使用材质硬件显示时实时转化为RGB;rxPLinux联盟

⑨窗口图像压缩,使用S3TC材质压缩,将内容很少改动的窗口压缩,存储于根窗口的桌面背景就是一个最好的应用。此项技术有可能节省大量内存;rxPLinux联盟

⑩使用OpenGL多实例表面为反锯齿X渲染提供新应用。rxPLinux联盟

⒉什么是Compiz?rxPLinux联盟

Compiz带来多种视觉效果,使得Linux桌面变得更方便、功能更强大、更新颖、更容易满足用户的特殊需求。Compiz使用OpenGL进行渲染,集窗口管理器与混合管理器于一身;窗口管理器处理屏幕上的应用程序和对话框,而混合管理器则使窗口和图形混合,产生混合图像;Compiz同时具有两者的功能,产生惊人的效果。rxPLinux联盟

Compiz目前只能与Xgl“共事”,Compiz的插件及窗口装饰器在Gnome和KDE下都能工作。rxPLinux联盟

⒊什么是aiglx?rxPLinux联盟
http://fedoraproject.org/wiki/RenderingProject/aiglx?highlight=%28aiglx%29rxPLinux联盟
Aiglx(Accelerated Indirect GL X)是一个旨在为标准桌面启用GL加速功能的项目,目的在于通过小幅度修改X server、使用添加新协议支持的Mesa升级版和带有混合管理器版本的metacity,让用户稍作改动即可在桌面上使用GL效果,随意开启、关闭该功能而无需替代使用中的X server。rxPLinux联盟
代码是与X 社区相关的上游完成,Fedora Core 5是第一个包括了模块X包和在适合位置添加适合协议的发布版。Aiglx在X基础方面已经进行了大量工作,但对实际的渲染效果并没下太大力气,希望广大社区帮助创造有趣、适当的效果。重要的不是此时就推出成品,而是鼓励社区围绕其进行开发和实验。rxPLinux联盟

二 体验 AiglxrxPLinux联盟
参考 http://fedoraproject.org/wiki/RenderingProject/aiglxrxPLinux联盟

⒈下载、安装rxPLinux联盟

①建立CVS目录rxPLinux联盟
rxPLinux联盟

mkdir /opt/CVS/rxPLinux联盟
cd /opt/CVS/

rxPLinux联盟

②下载安装最新的 GL protocol 头文件rxPLinux联盟
rxPLinux联盟

cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg loginrxPLinux联盟
CVS password:<回车>rxPLinux联盟
cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co proto/GLrxPLinux联盟
cd /opt/CVS/proto/GLrxPLinux联盟
./autogen.shrxPLinux联盟
makerxPLinux联盟
make install

rxPLinux联盟

③下载安装最新的 Xorg 服务器源码rxPLinux联盟
rxPLinux联盟

cvs -d:pserver:anoncvs@cvs.freedesktop:/cvs/xorg co xserver/xorgrxPLinux联盟
cd /opt/CVS/xserver/xorgrxPLinux联盟
./autogen.sh --with-mesa-source=/opt/CVS/Mesa --sysconfdir=/etcrxPLinux联盟
makerxPLinux联盟
make installrxPLinux联盟
ln -s /etc/X11/fs /usr/local/lib/X11/fs

rxPLinux联盟

④下载安装 Mesa 源码rxPLinux联盟
rxPLinux联盟

cvs -d:pserver:anoncvs@cvs.freedesktop:/cvs/mesa co MesarxPLinux联盟
cd /opt/CVS/MesarxPLinux联盟
make linux-dri-x86rxPLinux联盟
make install DESTDIR=/usr/local

rxPLinux联盟

⑤下载安装 libcomrxPLinux联盟
rxPLinux联盟

cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome loginrxPLinux联盟
CVS password: <回车>rxPLinux联盟
cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome co libcmrxPLinux联盟
cd /opt/CVS/libcmrxPLinux联盟
./autogen.shrxPLinux联盟
makerxPLinux联盟
make install

rxPLinux联盟

⑥下载安装 metacityrxPLinux联盟
rxPLinux联盟

cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome co metacityrxPLinux联盟
cd /opt/CVS/metacityrxPLinux联盟
./autogen.sh --enable-compositorrxPLinux联盟
makerxPLinux联盟
make install

rxPLinux联盟

⒉配置rxPLinux联盟

①启用混合管理器rxPLinux联盟
rxPLinux联盟

gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool true
rxPLinux联盟
或使用配置管理器设置/apps/metacity/general/compositing_manager键值

②修改/etc/X11/xorg.conf,添加rxPLinux联盟
rxPLinux联盟

Section "extensions"rxPLinux联盟
Option "Composite"rxPLinux联盟
EndSectionrxPLinux联盟
Section "Device"rxPLinux联盟
...rxPLinux联盟
Option "XAANoOffscreenPixmaps"rxPLinux联盟
EndSection

rxPLinux联盟

③禁用混合管理器,运行命令rxPLinux联盟
rxPLinux联盟

gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool false
rxPLinux联盟
或使用配置管理器修改/apps/metacity/general/compositing_manager键值

④使用鼠标右键来启用、禁用服务rxPLinux联盟
编辑文件:rxPLinux联盟
rxPLinux联盟

gedit ~/.gnome2/nautilus-scripts/aiglx

rxPLinux联盟

添加内容:rxPLinux联盟
rxPLinux联盟

#!/bin/bashrxPLinux联盟
title="Aiglx Service"rxPLinux联盟
#Date: 3-19-2006rxPLinux联盟
# Wriiten By: fedorajim@gmail.comrxPLinux联盟
zenity --question --text "Do you want to turn On or Off the AIGLX Service? Yes=On / Cancel=Off" --title="$title"rxPLinux联盟
if [ "$(echo $?)" == "1" ] #They clicked "no"rxPLinux联盟
     then # Turn off the AIGLX ServicerxPLinux联盟
        gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool falserxPLinux联盟
elserxPLinux联盟
# turn on the AIGLX ServicerxPLinux联盟
        gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool truerxPLinux联盟
fi
rxPLinux联盟
保存文件,使其可执行rxPLinux联盟
chmod u+x ~/.gnome2/nautilus-scripts/aiglx

rxPLinux联盟

⒊ 演示和已知问题rxPLinux联盟

①演示rxPLinux联盟
最小化之一 http://www.gnome.org/~jrb/aiglx/shot01.oggrxPLinux联盟
最小化之二 http://www.gnome.org/~jrb/aiglx/shot02.oggrxPLinux联盟
菜单淡化 http://www.gnome.org/~jrb/aiglx/shot03.oggrxPLinux联盟

②支持的显卡和一些问题rxPLinux联盟
http://fedoraproject.org/wiki/RenderingProject/aiglx#head-43a98eb9adc0264c802bf5918f1cc57bddbbc129rxPLinux联盟

三 体验 Xgl & CompizrxPLinux联盟

本文的重点是在不破坏原有系统的基础上,使普通用户体验 Xgl & Compiz的新效能。rxPLinux联盟
默认情况是安装路径为/opt/Xgl,没有进行(二)部分所做下载rxPLinux联盟

⒈下载安装rxPLinux联盟

①建立CVS源码目录,下载源码包:rxPLinux联盟
rxPLinux联盟

mkdir /opt/CVS
rxPLinux联盟
下载cvs源码的 libsvg, libsvg-cairo, mesa, xorg/glitz, xkbfile, glxproto, drm, compiz, FixesProto, ScrnSaverProto, CompositeProto, 下载control-center-2.14.0源码; 最新的cairo源码已经不再使用CVS,下载使用git。

使用yum安装gitrxPLinux联盟
rxPLinux联盟

yum install git
rxPLinux联盟
git clone git://git.cairographics.org/git/cairorxPLinux联盟
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/mesa loginrxPLinux联盟
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/mesa co MesarxPLinux联盟
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/cairo co glitz cairo libsvg libsvg-cairorxPLinux联盟
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co -r xgl-0-0-1 xserver/xorgrxPLinux联盟
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co lib/xkbfile proto/GLrxPLinux联盟
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/dri co drmrxPLinux联盟
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co app/compizrxPLinux联盟
cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co proto/Composite proto/Fixes proto/ScrnSaverrxPLinux联盟
wget http://ftp.gnome.org/mirror/gnome.org/sources/control-center/2.14/control-center-2.14.0.tar.bz2

rxPLinux联盟

②编译安装 rxPLinux联盟

编译安装glitzrxPLinux联盟
rxPLinux联盟

cd /opt/CVS/glitzrxPLinux联盟
./autogen.sh --prefix=/opt/XglrxPLinux联盟
makerxPLinux联盟
make install

rxPLinux联盟

添加PKG_CONFIG_PATH, LD_LIBRARY_PATH到: ~/.bashrcrxPLinux联盟
rxPLinux联盟

cat >> ~/.bashrc << EOFrxPLinux联盟
PKG_CONFIG_PATH=/opt/Xgl/lib/pkgconfigrxPLinux联盟
LD_LIBRARY_PATH=/opt/Xgl/librxPLinux联盟
export PKG_CONFIG_PATH LD_LIBRARY_PATHrxPLinux联盟
EOF
rxPLinux联盟
source ~/.bashrc

rxPLinux联盟

编译安装 control-centerrxPLinux联盟
rxPLinux联盟

cd /opt/CVS/rxPLinux联盟
tar xjvf control-center-2.14.0.tar.bz2rxPLinux联盟
cd control-center-2.14.0/rxPLinux联盟
./configure --prefix=/opt/Xgl --sysconfdir=/etcrxPLinux联盟
makerxPLinux联盟
make install

rxPLinux联盟

编译安装 libsvgrxPLinux联盟
rxPLinux联盟

cd /opt/CVS/libsvgrxPLinux联盟
./autogen.sh --prefix=/opt/XglrxPLinux联盟
makerxPLinux联盟
make instal

rxPLinux联盟

编译安装 cairorxPLinux联盟
rxPLinux联盟

cd /opt/CVS/cairorxPLinux联盟
./autogen.sh --prefix=/opt/XglrxPLinux联盟
makerxPLinux联盟
make install

rxPLinux联盟

编译安装 libsvg-cairo(注意安装顺序,libsvg-cairo依赖cairo,要后装)rxPLinux联盟
rxPLinux联盟

cd /opt/CVS/libsvg-cairorxPLinux联盟
./autogen.sh --prefix=/opt/Xgl/rxPLinux联盟
makerxPLinux联盟
make install

rxPLinux联盟

编译安装 GL proto(proto/GL)rxPLinux联盟
rxPLinux联盟

cd /opt/CVS/proto/GLrxPLinux联盟
./autogen.sh --prefix=/opt/XglrxPLinux联盟
make install

rxPLinux联盟

编译安装drm rxPLinux联盟

cd /opt/CVS/drmrxPLinux联盟
./autogen.sh --prefix=/opt/XglrxPLinux联盟
makerxPLinux联盟
make install

rxPLinux联盟

编译安装Composite,Fixes,ScrnSaverrxPLinux联盟
rxPLinux联盟

cd /opt/CVS/proto/CompositerxPLinux联盟
./autogen.sh --prefix=/opt/XglrxPLinux联盟
make installrxPLinux联盟
cd /opt/CVS/proto/FixesrxPLinux联盟
./autogen.sh --prefix=/opt/XglrxPLinux联盟
make installrxPLinux联盟
cd /opt/CVS/proto/ScrnSaverrxPLinux联盟
./autogen.sh --prefix=/opt/XglrxPLinux联盟
make install

rxPLinux联盟

编译安装 xorgrxPLinux联盟
rxPLinux联盟

cd /opt/CVS/xserver/xorgrxPLinux联盟
./autogen.sh --prefix=/opt/Xgl --disable-xorg --disable-dmx --disable-xvfb --disable-xnest --disable-xwin --enable-xgl --enable-xglx --with-mesa-source=/opt/CVS/Mesa/ --sysconfdir=/etc --enable-glx-dri --disable-xprintrxPLinux联盟
makerxPLinux联盟
make install

rxPLinux联盟

编译安装 compizrxPLinux联盟
rxPLinux联盟

cd /opt/CVS/app/compizrxPLinux联盟
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/opt/Xgl/lib/pkgconfig/ ./autogen.sh --prefix=/opt/Xgl/ --enable-libsvg-cairorxPLinux联盟
makerxPLinux联盟
make install
rxPLinux联盟
有些人编译遇到gnome、svg选项总是no,原因即在于缺少参数设置

编译安装MesarxPLinux联盟
rxPLinux联盟

cd /opt/CVS/MesarxPLinux联盟
make linux-dri-x86rxPLinux联盟
make install DESTDIR=/opt/Xgl
rxPLinux联盟
由于CVS源码变化很快,有时很出现长时间编译不成功的现象,这时就需要一点耐心了,到邮件列表(http://www.mesa3d.org/lists.html) 中去查找办法。当然也有替代的方法,就是下载发布版,如mesa cvs编译不成功就可以用Mesa-6.5,下载地址 自己选一个比较快的链接。相应地操作要变为:rxPLinux联盟
tar xjvf MesaLib-6.5.tar.bz2rxPLinux联盟
cd MesaLib-6.5rxPLinux联盟
make linux-dri-x86rxPLinux联盟
make install DESTDIR=/opt/Xgl

rxPLinux联盟

③配置rxPLinux联盟
添加工作路径rxPLinux联盟
rxPLinux联盟

cat > /etc/profile.d/Xgl.sh << "EOF"rxPLinux联盟
PATH="/opt/Xgl/bin:$PATH"rxPLinux联盟
export PATHrxPLinux联盟
EOF

rxPLinux联盟

修改/etc/sudoers,使用户可以运行ldconfig命令rxPLinux联盟
rxPLinux联盟

visudo /etc/sudoers
rxPLinux联盟
添加rxPLinux联盟
username ALL=NOPASSWD:/sbin/ldconfig

rxPLinux联盟

取消对~/.bashrc的修改,删除添加的内容:rxPLinux联盟
rxPLinux联盟

PKG_CONFIG_PATH=/opt/Xgl/lib/pkgconfigrxPLinux联盟
LD_LIBRARY_PATH=/opt/Xgl/librxPLinux联盟
export PKG_CONFIG_PATH LD_LIBRARY_PATH

rxPLinux联盟

修改~/.bash_profile,修改工作路径:rxPLinux联盟
rxPLinux联盟

PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin

rxPLinux联盟

保存如下脚本到/usr/local/bin/Xstarter:rxPLinux联盟
rxPLinux联盟

#!/bin/bashrxPLinux联盟
# a clumsy script to switch between default X server and XglrxPLinux联盟
# Licensed to copy, modify freelyrxPLinux联盟
# written by aaccdd < waxyxgn@hotmail.com>rxPLinux联盟
# scriptname=XstarterrxPLinux联盟
# before running this script, add following to /etc/sudoers:rxPLinux联盟
# username ALL=NOPASSWD:/sbin/ldconfigrxPLinux联盟
# to allow user run sudo ldconfigrxPLinux联盟
[ -e $HOME/.Xgl-Status-0 -o -e $HOME/.Xgl-Status-1 ] || touch $HOME/.Xgl-Status-0rxPLinux联盟
NotFound() {rxPLinux联盟
        echo "ERROR: $1 is not installed on your machine! to install $1, please type"rxPLinux联盟
        echo "yum $2 \"$3\""rxPLinux联盟
        exit 1rxPLinux联盟
}rxPLinux联盟
currentWM(){rxPLinux联盟
        if [ -e $HOME/.Xclients-default ]rxPLinux联盟
        thenrxPLinux联盟
                wmnow=$(sed -n 's/^WM=\"\(.*\)\"$/\1/p' $HOME/.Xclients-default )rxPLinux联盟
        firxPLinux联盟
        case "$wmnow" inrxPLinux联盟
                enlightment) WMnow=Enlightment;;rxPLinux联盟
                fluxbox) WMnow=Fluxbox;;rxPLinux联盟
                fvwm2) WMnow=Fvwm;;rxPLinux联盟
                icewm) WMnow=Icewm;;rxPLinux联盟
                twm) WMnow=Twm;;rxPLinux联盟
                wmake) WMnow=WMmake;;rxPLinux联盟
                startxfce4) WMnow=Xfce4;;rxPLinux联盟
                startkde) WMnow=KDE;;rxPLinux联盟
                gnome-session) WMnow=GNOME;;rxPLinux联盟
        esacrxPLinux联盟
}rxPLinux联盟
preXgl(){rxPLinux联盟
        if [ -e $HOME/.Xgl-Status-0 ]rxPLinux联盟
        thenrxPLinux联盟
        perl -e 'print "="x80;print "\n"'rxPLinux联盟
        echo -e "\t\tCreating necessary links and cache to share libraries\n"rxPLinux联盟
        echo -e "\t\tPlease stand by ...\n"rxPLinux联盟
        perl -e 'print "="x80;print "\n"'rxPLinux联盟
        sleep 2rxPLinux联盟
        sudo ldconfig /opt/Xgl/lib /opt/Xgl/lib/window-manager-settings \rxPLinux联盟
              /opt/Xgl/lib/xorg/modules/xgl /opt/Xgl/lib/compizrxPLinux联盟
        [ "$?" -eq 0 ] && mv $HOME/.Xgl-Status-0 $HOME/.Xgl-Status-1rxPLinux联盟
        sed -i 's/vo=xv,x11/vo=x11,xv/' $HOME/.mplayer/configrxPLinux联盟
        firxPLinux联盟
}rxPLinux联盟
postXgl(){rxPLinux联盟
        if [ -e $HOME/.Xgl-Status-1 ]rxPLinux联盟
        thenrxPLinux联盟
        perl -e 'print "="x80;print "\n"'rxPLinux联盟
        echo -e "\t\tCreating necessary links and cache to share libraries\n"rxPLinux联盟
        echo -e "\t\tPlease stand by ...\n"rxPLinux联盟
        perl -e 'print "="x80;print "\n"'rxPLinux联盟
        sleep 2rxPLinux联盟
        sudo ldconfigrxPLinux联盟
        [ "$?" -eq 0 ] && mv $HOME/.Xgl-Status-1 $HOME/.Xgl-Status-0rxPLinux联盟
        sed -i 's/vo=x11,xv/vo=xv,x11/' $HOME/.mplayer/configrxPLinux联盟
        firxPLinux联盟
}rxPLinux联盟
startX(){rxPLinux联盟
        currentWMrxPLinux联盟
        case "$wmnow" inrxPLinux联盟
                gnome-session) startx -- :1 &rxPLinux联盟
                                DISPLAY=:1 metacity &rxPLinux联盟
                                ;;rxPLinux联盟
                startxfce4) startx -- :1 &rxPLinux联盟
                                DISPLAY=:1 xfwm4 --daemon &rxPLinux联盟
                                ;;rxPLinux联盟
                *) startx -- :1 &rxPLinux联盟
                                ;;rxPLinux联盟
        esacrxPLinux联盟
}rxPLinux联盟
startXgl(){rxPLinux联盟
        export LANG="en_US.UTF-8" # 此处设置界面为英文,不是必需,如果不习惯注销即可rxPLinux联盟
        LD_PRELOAD=/usr/lib/libGL.so /opt/Xgl/bin/Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 &rxPLinux联盟
        # change xv:fbo to xv:pbuffer for ATI video cardrxPLinux联盟
        if [ "$wmnow" = "gnome-session" -o "$wmnow" = "startkde" -o "$wmnow" = "startxfce4" ]rxPLinux联盟
        thenrxPLinux联盟
        DISPLAY=:1 LD_LIBRARY_PATH="/opt/Xgl/lib:/opt/Xgl/lib/window-manager-settings: \rxPLinux联盟
                 /opt/Xgl/lib/xorg/modules/xgl:/opt/Xgl/lib/compiz" \rxPLinux联盟
                 compiz --replace gconf &rxPLinux联盟
        [ "$wmnow" = "gnome-session" ] && DISPLAY=:1 eval $(dbus-launch --auto-syntax)rxPLinux联盟
        DISPLAY=:1 gnome-window-decorator &rxPLinux联盟
        DISPLAY=:1 $wmnow &rxPLinux联盟
        DISPLAY=:1 /etc/X11/xinit/xinitrc.d/xinput.sh &rxPLinux联盟
        elserxPLinux联盟
        DISPLAY=:1 $wmnow &rxPLinux联盟
        DISPLAY=:1 /etc/X11/xinit/xinitrc.d/xinput.sh &rxPLinux联盟
        firxPLinux联盟
}rxPLinux联盟
switchDesktop(){rxPLinux联盟
        echo -e "\tWhich Desktop you want to use? Type in the name: \n"rxPLinux联盟
        read TargetDesktoprxPLinux联盟
        [ ! -x /usr/bin/switchdesk ] && NotFOUND switchdesk install "The Desktop Switcher"rxPLinux联盟
        switchdesk $TargetDesktoprxPLinux联盟
}rxPLinux联盟
prog="$0"rxPLinux联盟
wmnow="xterm"rxPLinux联盟
currentWMrxPLinux联盟
perl -w -e 'print "=" x80 ;print "\n"'rxPLinux联盟
echo -e "\tXstarter helps you to choose the window manager you want to run"rxPLinux联盟
echo -e "\tUse it to do:"rxPLinux联盟
echo -e "\t\t<1>\tstart your default window manager normally"rxPLinux联盟
echo -e "\t\t<2>\tswitch to other window manager then start X"rxPLinux联盟
echo -e "\t\t<3>\tstart Xgl & compiz on your default window manager"rxPLinux联盟
echo -e "\t\t<4>\tswitch window manager before starting Xgl & compiz"rxPLinux联盟
perl -w -e 'print "=" x80 ;print "\n"'rxPLinux联盟
echo -e "\tbefore running this, make sure /etc/sudoers modified accordingly"rxPLinux联盟
perl -w -e 'print "="x80;print "\n"'rxPLinux联盟
echo -e "\t\tyour current window manager is $WMnow\n"rxPLinux联盟
echo -e "\t\twhat to do next? please type in 1, 2, 3, or 4\n"rxPLinux联盟
echo -e "\t\tpress any other key to quit\n"rxPLinux联盟
read TODOrxPLinux联盟
case "$TODO" inrxPLinux联盟
        1) echo -e"\tStarting current default window manager\n"rxPLinux联盟
                postXglrxPLinux联盟
                startXrxPLinux联盟
                ;;rxPLinux联盟
        2) echo -e "\tRunning the Desktop Switcher to change window manager\n"rxPLinux联盟
                switchDesktop || exit 1rxPLinux联盟
                postXglrxPLinux联盟
                startXrxPLinux联盟
                ;;rxPLinux联盟
        3) echo -e "\tStarting Xgl & Compiz on default window manager\n"rxPLinux联盟
                preXglrxPLinux联盟
                startXglrxPLinux联盟
                ;;rxPLinux联盟
        4) echo -e "\tStarting Xgl & Compiz after switch window manager\n"rxPLinux联盟
                switchDesktop || exit 1rxPLinux联盟
                preXglrxPLinux联盟
                currentWMrxPLinux联盟
                startXglrxPLinux联盟
                ;;rxPLinux联盟
        *) echo -e "\tQuit now, legitimate inputs are ordinal number 1 to 4\n"rxPLinux联盟
                exit 1rxPLinux联盟
                ;;rxPLinux联盟
esac
rxPLinux联盟
使其具有执行权限rxPLinux联盟
chmod +x /usr/local/bin/Xstarter
rxPLinux联盟
脚本使用方法:rxPLinux联盟
修改/etc/inittab,将initdefault设定为3,绕过gdm,启动进入控制台;rxPLinux联盟
运行Xstarter,转换桌面管理器,启动X、Xgl;转换时,只需重启X,无须重启系统;rxPLinux联盟
运行Xstarter有四个选项:rxPLinux联盟
⑴以默认桌面启动X;rxPLinux联盟
⑵转换桌面,然后启动X;rxPLinux联盟
⑶以默认桌面启动Xgl;rxPLinux联盟
⑷转换桌面,然后启动Xgl;rxPLinux联盟
按Shift + Backspace退出
rxPLinux联盟
请参考提示⑩注意事项

⒉几个小提示rxPLinux联盟

①如何设置,增加cube的面(多于四个面的还叫cube吗?)rxPLinux联盟
rxPLinux联盟

gconftool-2 -t int -s /apps/compiz/general/screen0/options/size "5"
rxPLinux联盟
或用配置编辑器手动修改/apps/compiz/general/screen0/options/size键值,这样就是5个侧面了。

②如何在cube顶上添加演示文件rxPLinux联盟
rxPLinux联盟

yum install inkscape
rxPLinux联盟
运行OpenOffice,制作演示文件,每一幅幻灯保存为一张jpg图片rxPLinux联盟
运行Inkscape,将图片输出为svg文件(Scalable Vector Graphics)rxPLinux联盟
将所有的svg文件放入某个文件夹rxPLinux联盟
保存下面脚本到/usr/local/bin/svg2toprxPLinux联盟
#!/bin/bashrxPLinux联盟
echo "Give full path of the folder containing SVGs to use as Cube TOP:"rxPLinux联盟
read pathrxPLinux联盟
svglist=$(find $path -type f \( -name "*.svg" -o -name "*.png" \) -printf "%p,")rxPLinux联盟
gconftool-2 -s /apps/compiz/plugins/cube/screen0/options/images -t list --list-type=string "[${svglist%%,}]"rxPLinux联盟
echo "SVGs added"
rxPLinux联盟
运行svg2toprxPLinux联盟
svg2top 目录绝对路径
rxPLinux联盟
gconftool-2 -t bool -s /apps/compiz/plugins/rotate/screen0/options/snap_top true
rxPLinux联盟
向cube顶上添加演示文件,如产品推介、课程幻灯,rxPLinux联盟
Ctrl + Alt + 鼠标点击桌面空白处,转动cube显示顶部,rxPLinux联盟
Space键播放下一张,Esc返回桌面。

③如何添加天穹图片rxPLinux联盟
运行GIMP,制作天穹图片,选择自己喜欢的图片,按合适的比例保存为png格式;图片的比例为rxPLinux联盟
1024x1024rxPLinux联盟
1024x2048rxPLinux联盟
1024x4096rxPLinux联盟
2048x1024rxPLinux联盟
2048x2048rxPLinux联盟
2048x4096rxPLinux联盟
4096x1024rxPLinux联盟
4096x2048rxPLinux联盟
4096x4096rxPLinux联盟
...rxPLinux联盟
最好是2/1、1/2的比例,注意图片越大,资源占用越多。rxPLinux联盟
rxPLinux联盟

gconftool-2 -t bool -s /apps/compiz/plugins/cube/screen0/options/skydome truerxPLinux联盟
gconftool-2 -t bool -s /apps/compiz/plugins/cube/screen0/options/skydome_animated truerxPLinux联盟
gconftool-2 -t bool -s /apps/compiz/plugins/cube/screen0/options/skydome_image " "png图片的绝对路径"

rxPLinux联盟

④如何显示cube的内部rxPLinux联盟
rxPLinux联盟

gconftool-2 -t bool -s /apps/compiz/plugins/cube/screen0/options/in true

rxPLinux联盟

⑤一些快捷键的默认设置rxPLinux联盟
切换窗口 Alt + TabrxPLinux联盟
排列观看所有窗口 F12rxPLinux联盟
切换正方体(多边的也行)桌面 Ctrl + Alt + 左方向键/右方向键rxPLinux联盟
切换正方体桌面,当前窗口跟随 Ctrl + Alt + Shift + 左方向键/右方向键rxPLinux联盟
手动转到桌面 Ctrl + Alt + 鼠标左键单击桌面空白处rxPLinux联盟
窗口变透明、不透明 Ctrl + Alt + 鼠标滚轮rxPLinux联盟
自动缩小 超级键 + 鼠标右键rxPLinux联盟
手动缩小 超级键 + 鼠标滚轮向上rxPLinux联盟
手动放大 超级键 + 鼠标滚轮向下rxPLinux联盟
移动窗口 Alt + 鼠标左键rxPLinux联盟
挥动窗口 Ctrl + Alt + 鼠标左键(窗口粘附边框)rxPLinux联盟
改变窗口大小 Alt + 鼠标右键rxPLinux联盟
最小化窗口 Alt + F9rxPLinux联盟
最大化窗口 Alt + F10rxPLinux联盟
显示下层窗口 Alt + 鼠标中键rxPLinux联盟
减慢动作 Shift + F10rxPLinux联盟

*所谓超级键就是Win键。rxPLinux联盟
*这里列出的是一些默认的快捷键设置,但根据版本不同可能会有变化;你也可以使用gconf-editor来进行设定。rxPLinux联盟

⑥ATI显卡x300、x700可能遇到键盘无反应、锁定的情况,参考:rxPLinux联盟
ubuntu xglhoworxPLinux联盟
修改xorg.conf的Device部分:rxPLinux联盟
rxPLinux联盟

Section "Device"rxPLinux联盟
   Identifier "card0"rxPLinux联盟
   Driver "fglrx"rxPLinux联盟
   Option "no_accel" "no"rxPLinux联盟
   Option "no_dri" "no"rxPLinux联盟
   Option "DynamicClocks" "on"rxPLinux联盟
   Option "mtrr" "on"rxPLinux联盟
   Option "DesktopSetup" "Single"rxPLinux联盟
   Option "ScreenOverlap" "0"rxPLinux联盟
   Option "Capabilities" "0x00000000"rxPLinux联盟
   Option "CapabilitiesEx" "0x00000000"rxPLinux联盟
   Option "VideoOverlay" "on"rxPLinux联盟
   Option "OpenGLOverlay" "off"rxPLinux联盟
   Option "CenterMode" "off"rxPLinux联盟
   Option "PseudoColorVisuals" "off"rxPLinux联盟
   Option "Stereo" "off"rxPLinux联盟
   Option "StereoSyncEnable" "1"rxPLinux联盟
   Option "FSAAEnable" "no"rxPLinux联盟
   Option "FSAAScale" "1"rxPLinux联盟
   Option "FSAADisableGamma" "no"rxPLinux联盟
   Option "FSAACustomizeMSPos" "no"rxPLinux联盟
   Option "FSAAMSPosX0" "0.000000"rxPLinux联盟
   Option "FSAAMSPosY0" "0.000000"rxPLinux联盟
   Option "FSAAMSPosX1" "0.000000"rxPLinux联盟
   Option "FSAAMSPosY1" "0.000000"rxPLinux联盟
   Option "FSAAMSPosX2" "0.000000"rxPLinux联盟
   Option "FSAAMSPosY2" "0.000000"rxPLinux联盟
   Option "FSAAMSPosX3" "0.000000"rxPLinux联盟
   Option "FSAAMSPosY3" "0.000000"rxPLinux联盟
   Option "FSAAMSPosX4" "0.000000"rxPLinux联盟
   Option "FSAAMSPosY4" "0.000000"rxPLinux联盟
   Option "FSAAMSPosX5" "0.000000"rxPLinux联盟
   Option "FSAAMSPosY5" "0.000000"rxPLinux联盟
   Option "UseFastTLS" "0"rxPLinux联盟
   Option "BlockSignalsOnLock" "on"rxPLinux联盟
   Option "UseInternalAGPGART" "no"rxPLinux联盟
   Option "ForceGenericCPU" "no"rxPLinux联盟
   Option "KernelModuleParm" "agplock=0"rxPLinux联盟
   Option "PowerState" "1"rxPLinux联盟
   BusID "PCI:1:0:0"rxPLinux联盟
EndSection

rxPLinux联盟

⑦如果SELinux启用,需要修改以下文件的安全上下文rxPLinux联盟
rxPLinux联盟

chcon -t textrel_shlib_t /opt/Xgl/lib/libGL.sorxPLinux联盟
chcon -t textrel_shlib_t /opt/Xgl/lib/libGLU.so

rxPLinux联盟

⑧注意事项:rxPLinux联盟
编译安装的操作步骤,均默认为在同一终端内完成;如果使用多个终端,需要设置相应的环境变量;rxPLinux联盟
使用Xgl时,建议不要进行rpm包安装、yum升级的操作;原因在于,这种安装方法是尽量使系统不受Xgl安装的影响,如果在使用Xgl时进行了系统升级,会因Xgl共享库路径未在系统文件中配置,启动默认X时产生错误的依赖关系;而且运行中Xgl也会因共享库路径变化出错。如果要将Xgl、Compiz作为日常应用,请参考第四部分的方法;rxPLinux联盟
由于编译时指定了安装位置,卸载时只需删除/etc/profile.d/Xgl.sh、/usr/local/bin/Xstarter和/opt/Xgl目录即可。rxPLinux联盟

⑨compiz的gconf键值参考:rxPLinux联盟
https://wiki.ubuntu.com/compizrxPLinux联盟

⑩排错参考:rxPLinux联盟
http://gentoo-wiki.com/HOWTO_XGL/TroubleshootingrxPLinux联盟

⒊相关资源链接:rxPLinux联盟
http://www.freedesktop.org/wiki/Software_2fXgllrxPLinux联盟
http://en.opensuse.org/XglrxPLinux联盟
http://en.opensuse.org/CompizrxPLinux联盟
http://gentoo-wiki.com/HOWTO_XGLrxPLinux联盟
https://wiki.ubuntu.com/XglHowto?highlight=%28xgl%29rxPLinux联盟
http://compiz.ed3n.com/rxPLinux联盟
http://gentoo-wiki.com/HOWTO_XGL/TroubleshootingrxPLinux联盟

四 打包安装Xgl和CompizrxPLinux联盟
前文讲述了从源码编译、安装、配置Aiglx和Xgl、Compiz的过程,下面讲一下,如何对源码进行打包,制作成FC5专用的rpm包。rxPLinux联盟
在fedora rawhide中提供了Aiglx的rpm包,此处不予赘述。rxPLinux联盟

⒈安装fedora-rpmdevtools,生成rpmbuild目录:rxPLinux联盟
rxPLinux联盟

yum install fedora-rpmdevtoolsrxPLinux联盟
fedora-buildrpmtree
rxPLinux联盟
修改~/.rpmmacrosrxPLinux联盟
%_topdir %(echo $HOME)/rpmbuildrxPLinux联盟
%_prefix /usr/localrxPLinux联盟
%_mandir /usr/local/manrxPLinux联盟
%_defaultdocdir /usr/local/share/docrxPLinux联盟
%_sysconfdir /usr/local/etcrxPLinux联盟
%_smp_mflags -j3rxPLinux联盟
#%__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot

rxPLinux联盟

⒉下载源码包:rxPLinux联盟
下载我制作的源码包,下载地址如下:rxPLinux联盟
下载页面rxPLinux联盟
提取码:rxPLinux联盟
compiz-cvs 0009972112435392rxPLinux联盟
xgl-cvs 7117086849938431rxPLinux联盟

⒊使用rpmbuild命令重新编译打包:rxPLinux联盟
rxPLinux联盟

rpmbuild --rebuild xgl-cvs_060430.src.rpmrxPLinux联盟
rpmbuild --rebuild compiz-cvs_060430.src.rpm

rxPLinux联盟

⒋我编译好的xgl和compiz binary包下载,仅提供了x86包,使用x86_64版本的兄弟请下载源码包重新打包。rxPLinux联盟

下载页面rxPLinux联盟

五 如何配置系统文件,使Xgl & Compiz自动运行:rxPLinux联盟

此方法适用于第四部分之rpm包安装,及源码编译安装(需要修改的路径,由/usr/local/变为/opt/Xgl)rxPLinux联盟
所谓配置无非是两点:rxPLinux联盟

——配置显示管理器(displaymanager),使系统启动后启用Xgl server;rxPLinux联盟
由于Xgl启动时间稍长,所以要延长显示管理器的等待时间,然后添加命令rxPLinux联盟

——配置桌面环境、管理器,使桌面启动后启用Compiz窗口管理器;rxPLinux联盟

下面简单介绍一下:rxPLinux联盟

①FC5的显示管理器(DISPLAYMANGAGER)在/etc/sysconfig/desktop中配置,如:rxPLinux联盟
rxPLinux联盟

cat /etc/sysconfig/desktoprxPLinux联盟
DESKTOP=GNOMErxPLinux联盟
DISPLAYMANAGER=GNOME
rxPLinux联盟
在这里,桌面环境是GNOME,显示管理器是GNOME(gdm);如果是KDE,则相应地均为KDE(kdm)。

②显示管理器所对应的配置文件分别是:rxPLinux联盟
GNOME: /etc/gdm/custom.confrxPLinux联盟
KDE: /etc/kde/kdm/kdmrcrxPLinux联盟

修改为:rxPLinux联盟
如果使用gdm,修改完配置文件使用gdmflexiserver命令更新,或重启系统rxPLinux联盟
rxPLinux联盟

[daemon]rxPLinux联盟
GdmXserverTimeout=30 #修改这里延长等待时间rxPLinux联盟
[security]rxPLinux联盟
[xdmcp]rxPLinux联盟
[gui]rxPLinux联盟
[greeter]rxPLinux联盟
[chooser]rxPLinux联盟
[debug]rxPLinux联盟
[servers]rxPLinux联盟
0=Standard # 修改这里“覆盖”默认Standard serverrxPLinux联盟
[server-Standard] # 修改这里添加命令rxPLinux联盟
name=Standard serverrxPLinux联盟
# nvidia 显卡rxPLinux联盟
command=/usr/local/bin/Xgl :0 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 -fullscreenrxPLinux联盟
# ati 显卡rxPLinux联盟
# command=/usr/local/bin/Xgl :1 -ac -accel glx:pbuffer -accel xv:pbuffer -audit 0 -fullscreenrxPLinux联盟
# i810 使用i810驱动的intel 显卡rxPLinux联盟
# command=/usr/bin/Xgl :0 -accel xv -accel glx:pbuffer -accel xv:pbuffer -ac -audit 0 -br -dpms -dpi 72rxPLinux联盟
flexible=true # 使用gdmflexiserver命令更新rxPLinux联盟
chooser=false
rxPLinux联盟
如果使用kdmrxPLinux联盟
[General]rxPLinux联盟
ConfigVersion=2.3rxPLinux联盟
StaticServers=:0rxPLinux联盟
ReserveServers=:1,:2,:3rxPLinux联盟
ServerVTs=-7rxPLinux联盟
ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6rxPLinux联盟
PidFile=/var/run/kdm.pidrxPLinux联盟
[Xdmcp]rxPLinux联盟
Enable=falserxPLinux联盟
Xaccess=/etc/X11/xdm/XaccessrxPLinux联盟
Willing=/etc/X11/xdm/XwillingrxPLinux联盟
[Shutdown]rxPLinux联盟
HaltCmd=/sbin/poweroffrxPLinux联盟
[X-*-Core]rxPLinux联盟
Resources=/etc/X11/xdm/XresourcesrxPLinux联盟
Setup=/etc/X11/xdm/Xsetup_0rxPLinux联盟
Session=/etc/kde/kdm/XsessionrxPLinux联盟
AutoReLogin=falserxPLinux联盟
AllowShutdown=RootrxPLinux联盟
SessionsDirs=/usr/share/xsessions,/usr/share/apps/kdm/sessions,/etc/X11/dm/sessionsrxPLinux联盟
ClientLogFile=.xsession-errors-%srxPLinux联盟
[X-*-Greeter]rxPLinux联盟
GUIStyle=BluecurverxPLinux联盟
ColorScheme=BlueCurve.kcsrcrxPLinux联盟
LogoArea=ClockrxPLinux联盟
LogoPixmap=/usr/share/apps/kdm/pics/kdelogo.pngrxPLinux联盟
GreetFont=Sans,16,-1,5,75,0,0,0,0,0rxPLinux联盟
StdFont=Sans,10,-1,5,50,0,0,0,0,0rxPLinux联盟
FailFont=Sans,12,-1,5,75,0,0,0,0,0rxPLinux联盟
AntiAliasing=truerxPLinux联盟
UserList=falserxPLinux联盟
ShowUsers=NotHiddenrxPLinux联盟
MinShowUID=500rxPLinux联盟
SortUsers=truerxPLinux联盟
FocusPasswd=truerxPLinux联盟
EchoMode=OneStarrxPLinux联盟
UseBackground=falserxPLinux联盟
BackgroundCfg=/etc/kde/kdm/backgroundrcrxPLinux联盟
ForgingSeed=1108476160rxPLinux联盟
Preloader=/usr/bin/preloadkderxPLinux联盟
UseTheme=truerxPLinux联盟
Theme=/usr/share/apps/kdm/themes/BluecurverxPLinux联盟
# 看这一段,修改的是ServerCmd,所做的修改依显卡而定 NVidia显卡xv:fbo ATI显卡xv:pbuffer Intel显卡rxPLinux联盟
#(支持的型号)同NVidia xv:fborxPLinux联盟
[X-:*-Core]rxPLinux联盟
ServerAttempts=5 # 修改这里增加尝试次数rxPLinux联盟
ServerTimeout=60 # 修改这里延长超时等待rxPLinux联盟
ServerCmd=/usr/local/bin/Xgl :0 -ac -accel glx:pbuffer -accel xv:fbo -fullscreen -audit 0 # 修改这里添加命令rxPLinux联盟
ServerArgsLocal=-nolisten tcprxPLinux联盟
AllowShutdown=AllrxPLinux联盟
[X-:*-Greeter]rxPLinux联盟
PreselectUser=PreviousrxPLinux联盟
FocusPasswd=truerxPLinux联盟
LoginMode=DefaultLocalrxPLinux联盟
[X-:0-Core]rxPLinux联盟
[X-:0-Greeter]

rxPLinux联盟

③现在系统启动后Xgl就会自动启动了,但是还不够,如果不使用Compiz窗口管理器,则使用开发版的Xgl Server就没有意义了,rxPLinux联盟
毕竟从性能完备、稳定性和速度上,Xgl还有不足。要启用Compiz窗口管理器,对不同的桌面环境需要做不同的配置rxPLinux联盟

首先,制作一个脚本:/usr/local/bin/compizrcrxPLinux联盟
rxPLinux联盟

#!/bin/shrxPLinux联盟
#rxPLinux联盟
# compiz plugins load order: decoration wobbly fade minimize cube rotate zoom scale move resize place switcherrxPLinux联盟
#rxPLinux联盟
LD_LIBRARY_PATH="/usr/local/lib:/usr/local/lib/window-manager-settings:/usr/local/lib/xorg/modules/xgl:/usr/local/lib/compiz" compiz --replace gconf > /tmp/compiz-`id -un`-`date +%s`.log 2>&1 &rxPLinux联盟
/usr/local/bin/gnome-window-decorator > /tmp/gnome-window-decorator-`id -un`-`date +%s`.log 2>&1 &
rxPLinux联盟
使其可执行rxPLinux联盟
chmod 755 /usr/local/bin/compizrc

rxPLinux联盟

如果使用GNOME,则:rxPLinux联盟
打开 桌面 → 首选项 → 更多首选项 → 会话rxPLinux联盟
选择“启动程序”标签,添加启动程序/usr/local/bin/compizrcrxPLinux联盟
保存会话rxPLinux联盟

如果使用KDE,则:rxPLinux联盟
制作自动启动程序桌面文件 ~/.kde/Autostart/Compiz.desktoprxPLinux联盟
rxPLinux联盟

[Desktop Entry]rxPLinux联盟
Name[en]=Compiz Window ManagerrxPLinux联盟
Name[zh_CN]=Compiz 窗口管理器rxPLinux联盟
Comment[en]=Compiz - Composite Window ManagerrxPLinux联盟
Comment[zh_CN]=Compiz - 混合窗口管理器rxPLinux联盟
Exec=/usr/local/bin/compizrcrxPLinux联盟
Type=ApplicationrxPLinux联盟
Categories=Application;UtilityrxPLinux联盟
Encoding=UTF-8

rxPLinux联盟

如果使用Xfce,则:rxPLinux联盟
rxPLinux联盟

[General]rxPLinux联盟
SessionName=DefaultrxPLinux联盟
SessionName[de]=StandardrxPLinux联盟
DisableTcp=TruerxPLinux联盟
[Failsafe Session]rxPLinux联盟
Count=4rxPLinux联盟
Client0_Command=/usr/local/bin/compizrc # 修改这里添加命令,替代xfwm4rxPLinux联盟
Client0_PerScreen=FalserxPLinux联盟
Client1_Command=xfce4-panelrxPLinux联盟
Client1_PerScreen=TruerxPLinux联盟
Client2_Command=xftaskbar4rxPLinux联盟
Client2_PerScreen=TruerxPLinux联盟
Client3_Command=xfdesktoprxPLinux联盟
Client3_PerScreen=FalserxPLinux联盟
[Splash Screen]rxPLinux联盟
Engine=mice
rxPLinux联盟
经过上述配置,即可以图形方式进行重启系统,Xgl和Compiz自动运行;经过测试gdm或kdm均可正常运行。

④以文本界面启动,如何自动运行Xgl & CompizrxPLinux联盟
很多人像我一样,是喜欢启动进入控制台(Console)的,(原来在这说了句废话:^P)其实Linux控制台下的功能就很强悍了,只要你习惯;rxPLinux联盟
这时就需要一个启动脚本,下面是我写的一个简单脚本,供参考:rxPLinux联盟
rxPLinux联盟

#!/bin/bashrxPLinux联盟
# written by aaccdd(thomas.zhuzhy@gmail.com)rxPLinux联盟
# progname: startXglrxPLinux联盟
# save as /usr/local/bin, or wherever you'd like torxPLinux联盟
# What will startXgl do:rxPLinux联盟
# 1st, check out which desktop you're going to runrxPLinux联盟
# if that is one of GNOME, KDE, XFCE, proceedrxPLinux联盟
# otherwise, start default XrxPLinux联盟
# 2nd, check out whether NV/ATI Driver installed"rxPLinux联盟
# with a possitive result, proceed to startrxPLinux联盟
# Xgl and CompizrxPLinux联盟
#rxPLinux联盟
# start XglrxPLinux联盟
#rxPLinux联盟
startXgl(){rxPLinux联盟
        VCARD=; VCDRNV=0; VCDRATI=0; VCDRINTEL=0rxPLinux联盟
        [ -n "$(/sbin/lspci|sed -n '/VGA.*nVidia/p')" ] && VCARD=nvrxPLinux联盟
        [ -n "$(/sbin/lspci|sed -n '/VGA.*ATI/p')" ] && VCARD=atirxPLinux联盟
        [ -n "$(/sbin/lspci|sed -n '/VGA.*Intel/p')" ] && VCARD=intelrxPLinux联盟
        case "$VCARD" inrxPLinux联盟
        nv) [ -n "$(sed -n '/nvidia/p' /etc/X11/xorg.conf)" ] && VCDRNV=1rxPLinux联盟
                [ "$VCDRNV" -eq 0 ] && echo -e "\tDriver not installed" && exit 1rxPLinux联盟
                Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 &rxPLinux联盟
                ;;rxPLinux联盟
        ati) [ -n "$(sed -n '/fglrx/p' /etc/X11/xorg.conf)" ] && VCDRATI=1rxPLinux联盟
                [ "$VCDRATI" -eq 0 ] && echo -e "\tDriver not installed" && exit 1rxPLinux联盟
                Xgl :1 -ac -accel glx:pbuffer -accel xv:pbuffer -audit 0 &rxPLinux联盟
                ;;rxPLinux联盟
        intel) [ -n "$(sed -n '/i810/p' /etc/X11/xorg.conf)" ] && VCDRINTEL=1rxPLinux联盟
                [ "$VCDRINTEL" -eq 0 ] && echo -e "\tDriver may not be supported" && exit 1rxPLinux联盟
                Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 &rxPLinux联盟
                ;;rxPLinux联盟
        *) startx ;;rxPLinux联盟
        esacrxPLinux联盟
        /usr/local/bin/compizrcrxPLinux联盟
        DISPLAY=:1 eval $(dbus-launch --auto-syntax)rxPLinux联盟
        DISPLAY=:1 $wmnow &rxPLinux联盟
        DISPLAY=:1 exec /etc/X11/xinit/xinitrc.d/xinput.shrxPLinux联盟
}rxPLinux联盟
wmnow=rxPLinux联盟
which xterm 2>/dev/null && wmnow="xterm"rxPLinux联盟
if [ -e $HOME/.Xclients-default ]rxPLinux联盟
thenrxPLinux联盟
        wmnow=$(sed -n 's/^WM=\"\(.*\)\"$/\1/p' $HOME/.Xclients-default )rxPLinux联盟
elif [ $(which gnome-session 2>/dev/null) ]rxPLinux联盟
        then wmnow="gnome-session"rxPLinux联盟
elif [ $(which startkde 2>/dev/null) ]rxPLinux联盟
        then wmnow="startkde"rxPLinux联盟
firxPLinux联盟
case "$wmnow" inrxPLinux联盟
        gnome-session|startkde|startxfce4) startXgl;;rxPLinux联盟
        *) startx;;rxPLinux联盟
esac
rxPLinux联盟
有人说为什么是display :1而不是0呢?这要看你的机器配置和运行方式,0不能行就尝试1。而这个脚本远不完善,rxPLinux联盟
不是说运行就个脚本不成功,就不能运行Xgl & Compiz,请根据自己的实际情况修改、使用。

如果也想登录自动启动,则修改 ~/.bash_profilerxPLinux联盟
rxPLinux联盟

echo "[ x"DISPLAY" = x"" ] && startXgl " >> ~/.bash_profile

rxPLinux联盟

⑤测试是否安装成功:rxPLinux联盟
到这里基本完成了配置,剩下的就是运行了。建议新建一个用户,如compiz测试一下。实际上,安装完rpm包后,rxPLinux联盟
不需要重启系统就可以使用了。当然前提是测试成功。rxPLinux联盟

Ctrl + Alt + F1(1-6)切换到控制台下,如果你是图形方式启动的。运行命令:rxPLinux联盟
rxPLinux联盟

Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo &
rxPLinux联盟
如果是ati显卡使用xv:pbuffer;如果报错,Badlength...,Xgl前使用参数LD_PRELOAD=/usr/lib/libGL.so 。rxPLinux联盟
如果成功,你会看到X启动,有一个叉形的鼠标标记。这说明Xgl运行成功。rxPLinux联盟
有人又问了,为什么是:1,呢?注意一下,如果你是图形启动,此时:0已经占用了。rxPLinux联盟
DISPLAY=:1 compiz --replace gconf &rxPLinux联盟
DISPLAY=:1 gnome-window-decorator &
rxPLinux联盟
如果窗口变成蓝色,出现鼠标键头,Compiz已经运行。rxPLinux联盟
DISPLAY=:1 xterm &
rxPLinux联盟
这时你就看到一个在Xgl & Compiz环境下xterm终端的样子了。

⑥为什么我运行不了?rxPLinux联盟
首先看的硬件配置,参考:http://gentoo-wiki.com/HOWTO_XGL#Hardware_PrerequisitesrxPLinux联盟
其次,查看是否配置文件有误rxPLinux联盟
再次,查看gconf键值是否有误rxPLinux联盟
补充:rxPLinux联盟
有兄弟反映运行时打不开DISPLAY, 变通的方法:rxPLinux联盟
修改startXgl脚本,早几天的脚本里使用的是DISPLAY=:1,改成DISPLAY=:0;rxPLinux联盟
或修改/etc/X11/xdm/Xservers,添加一行:rxPLinux联盟
rxPLinux联盟

:0 local /usr/bin/XrxPLinux联盟
:1 local /usr/bin/X
rxPLinux联盟
上面说的是图形启动状态;rxPLinux联盟
fc5的设备由udev管理,在控制台下生成的设备权限,由pam按照系统权限控制文件的设置决定,rxPLinux联盟
比如显卡设备,默认的权限是600(用户读写)因而当切换用户(root除外)后,是无法使用该设备的。rxPLinux联盟
解决的办法是修改权限设置。rxPLinux联盟
举个例子:在默认的控制台权限控制文件中(/etc/security/console.perms.d/50-default.perms)声音和显卡设备权限都是0600,即仅属主读写,要让登录的用户都可以读写(使用),则可生成文件60-custom.perms:rxPLinux联盟
cat > /etc/security/console.perms.d/60-custom.perms << EOFrxPLinux联盟
<sound>=/dev/dsp* /dev/audio* /dev/midi* \rxPLinux联盟
/dev/mixer* /dev/sequencer \rxPLinux联盟
/dev/sound/* /dev/beep \rxPLinux联盟
/dev/snd/*rxPLinux联盟
<dri>=/dev/nvidia* /dev/3dfx* /dev/dri/card*rxPLinux联盟
# device permission definitionrxPLinux联盟
<console> 0666 <sound> 0666 rootrxPLinux联盟
<console> 0666 <dri> 0666 rootrxPLinux联盟
EOF
rxPLinux联盟
这样,系统启动时会自动设置声音和显卡设备为用户均可读写。

六 写在后面:rxPLinux联盟
本文是作者原创,如有错误遗漏,敬请指出。经作者验证,Aiglx启动相对简便,Xgl & Compiz在gnome、kde、xfce上都能rxPLinux联盟
运行,比较稳定,运行一周多时间里只有一次是手误按了Shift + Backspace杀死了Xgl,没有出现过崩溃现象,多数应用程序运rxPLinux联盟
行正常。但各人机器配置多有不同,如有不适合之处,请指正批评。本文遵循GPL发布,保留原始发布信息基础上,可以自由修改,rxPLinux联盟
传播。因按文中所述方法,造成损失的,作者不承担任何责任。rxPLinux联盟

由于Xgl和Compiz仍然处于快速开发状态,虽然我会尽量更新,但是文档中所述内容不能保证于最新的版本同步。rxPLinux联盟

来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
    无相关信息
栏目更新
栏目热门