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

  摘要:

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

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

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

  一 写在前面:

  ⒈什么是Xgl?

  http://www.freedesktop.org/wiki/Software_2fXgl

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

  它有哪些新的特性呢?

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

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

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

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

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

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

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

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

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

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

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

  ⒉什么是Compiz?

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

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

  ⒊什么是aiglx?

  http://fedoraproject.org/wiki/RenderingProject/aiglx?highlight=%28aiglx%29

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

  代码是与X 社区相关的上游完成,Fedora Core 5是第一个包括了模块X包和在适合位置添加适合协议的发布版。Aiglx在X基础方面已经进行了大量工作,但对实际的渲染效果并没下太大力气,希望广大社区帮助创造有趣、适当的效果。重要的不是此时就推出成品,而是鼓励社区围绕其进行开发和实验。

  二 体验 Aiglx

  参考 http://fedoraproject.org/wiki/RenderingProject/aiglx

  ⒈下载、安装

  ①建立CVS目录

  mkdir /opt/CVS/

cd /opt/CVS/

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

  cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg login

CVS password:cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co proto/GLcd /opt/CVS/proto/GL./autogen.shmakemake install

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

  cvs -d:pserver:anoncvs@cvs.freedesktop:/cvs/xorg co xserver/xorg

cd /opt/CVS/xserver/xorg./autogen.sh --with-mesa-source=/opt/CVS/Mesa --sysconfdir=/etcmakemake installln -s /etc/X11/fs /usr/local/lib/X11/fs

  ④下载安装 Mesa 源码

  cvs -d:pserver:anoncvs@cvs.freedesktop:/cvs/mesa co Mesa

cd /opt/CVS/Mesamake linux-dri-x86make install DESTDIR=/usr/local

  ⑤下载安装 libcom

  cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome login

CVS password: cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome co libcmcd /opt/CVS/libcm./autogen.shmakemake install

  ⑥下载安装 metacity

  cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome co metacity

cd /opt/CVS/metacity./autogen.sh --enable-compositormakemake install

  ⒉配置

  ①启用混合管理器

  gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool true

  或使用配置管理器设置/apps/metacity/general/compositing_manager键值

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

  Section "extensions"

Option "Composite"EndSectionSection "Device"...Option "XAANoOffscreenPixmaps"EndSection

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

  gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool false

  或使用配置管理器修改/apps/metacity/general/compositing_manager键值

  ④使用鼠标右键来启用、禁用服务

  编辑文件:

  gedit ~/.gnome2/nautilus-scripts/aiglx

  添加内容:

  #!/bin/bash

title="Aiglx Service"#Date: 3-19-2006# Wriiten By: fedorajim@gmail.comzenity --question --text "Do you want to turn On or Off the AIGLX Service? Yes=On / Cancel=Off" --title="$title"if [ "$(echo $?)" == "1" ] #They clicked "no"   then # Turn off the AIGLX Service    gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool falseelse# turn on the AIGLX Service    gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool truefi

  保存文件,使其可执行

  chmod u+x ~/.gnome2/nautilus-scripts/aiglx

  ⒊ 演示和已知问题

  ①演示

  最小化之一 http://www.gnome.org/~jrb/aiglx/shot01.ogg

  最小化之二 http://www.gnome.org/~jrb/aiglx/shot02.ogg

  菜单淡化 http://www.gnome.org/~jrb/aiglx/shot03.ogg

  ②支持的显卡和一些问题

  http://fedoraproject.org/wiki/RenderingProject/aiglx#head-43a98eb9adc0264c802bf5918f1cc57bddbbc129

  三 体验 Xgl & Compiz

  本文的重点是在不破坏原有系统的基础上,使普通用户体验 Xgl & Compiz的新效能。

  默认情况是安装路径为/opt/Xgl,没有进行(二)部分所做下载

  ⒈下载安装

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

  mkdir /opt/CVS

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

  使用yum安装git

  yum install git

  git clone git://git.cairographics.org/git/cairo

cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/mesa logincvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/mesa co Mesacvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/cairo co glitz cairo libsvg libsvg-cairocvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co -r xgl-0-0-1 xserver/xorgcvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co lib/xkbfile proto/GLcvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/dri co drmcvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co app/compizcvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co proto/Composite proto/Fixes proto/ScrnSaverwget http://ftp.gnome.org/mirror/gnome.org/sources/control-center/2.14/control-center-2.14.0.tar.bz2

  ②编译安装

  编译安装glitz

  cd /opt/CVS/glitz

./autogen.sh --prefix=/opt/Xglmakemake install

  添加PKG_CONFIG_PATH, LD_LIBRARY_PATH到: ~/.bashrc

  cat >> ~/.bashrc << EOF

PKG_CONFIG_PATH=/opt/Xgl/lib/pkgconfigLD_LIBRARY_PATH=/opt/Xgl/libexport PKG_CONFIG_PATH LD_LIBRARY_PATHEOF

  source ~/.bashrc

  编译安装 control-center

  cd /opt/CVS/

tar xjvf control-center-2.14.0.tar.bz2cd control-center-2.14.0/./configure --prefix=/opt/Xgl --sysconfdir=/etcmakemake install

  编译安装 libsvg

  cd /opt/CVS/libsvg

./autogen.sh --prefix=/opt/Xglmakemake instal

  编译安装 cairo

  cd /opt/CVS/cairo

./autogen.sh --prefix=/opt/Xglmakemake install

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

  cd /opt/CVS/libsvg-cairo

./autogen.sh --prefix=/opt/Xgl/makemake install

  编译安装 GL proto(proto/GL)

  cd /opt/CVS/proto/GL

./autogen.sh --prefix=/opt/Xglmake install

  编译安装drm

  cd /opt/CVS/drm

./autogen.sh --prefix=/opt/Xglmakemake install

  编译安装Composite,Fixes,ScrnSaver

  cd /opt/CVS/proto/Composite

./autogen.sh --prefix=/opt/Xglmake installcd /opt/CVS/proto/Fixes./autogen.sh --prefix=/opt/Xglmake installcd /opt/CVS/proto/ScrnSaver./autogen.sh --prefix=/opt/Xglmake install

  编译安装 xorg

  cd /opt/CVS/xserver/xorg

./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-xprintmakemake install

  编译安装 compiz

  cd /opt/CVS/app/compiz

PKG_CONFIG_PATH=/usr/lib/pkgconfig:/opt/Xgl/lib/pkgconfig/ ./autogen.sh --prefix=/opt/Xgl/ --enable-libsvg-cairomakemake install

  有些人编译遇到gnome、svg选项总是no,原因即在于缺少参数设置

  编译安装Mesa

  cd /opt/CVS/Mesa

make linux-dri-x86make install DESTDIR=/opt/Xgl

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

  tar xjvf MesaLib-6.5.tar.bz2

cd MesaLib-6.5make linux-dri-x86make install DESTDIR=/opt/Xgl

  ③配置

  添加工作路径

  cat > /etc/profile.d/Xgl.sh << "EOF"

PATH="/opt/Xgl/bin:$PATH"export PATHEOF

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

  visudo /etc/sudoers

  添加

  username ALL=NOPASSWD:/sbin/ldconfig

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

  PKG_CONFIG_PATH=/opt/Xgl/lib/pkgconfig

LD_LIBRARY_PATH=/opt/Xgl/libexport PKG_CONFIG_PATH LD_LIBRARY_PATH

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

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

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

  #!/bin/bash

# a clumsy script to switch between default X server and Xgl# Licensed to copy, modify freely# written by aaccdd < waxyxgn@hotmail.com># scriptname=Xstarter# before running this script, add following to /etc/sudoers:# username ALL=NOPASSWD:/sbin/ldconfig# to allow user run sudo ldconfig[ -e $HOME/.Xgl-Status-0 -o -e $HOME/.Xgl-Status-1 ] || touch $HOME/.Xgl-Status-0NotFound() {    echo "ERROR: $1 is not installed on your machine! to install $1, please type"    echo "yum $2 "$3""    exit 1}currentWM(){    if [ -e $HOME/.Xclients-default ]    then        wmnow=$(sed -n 's/^WM="(.*)"$/1/p' $HOME/.Xclients-default )    fi    case "$wmnow" in        enlightment) WMnow=Enlightment;;        fluxbox) WMnow=Fluxbox;;        fvwm2) WMnow=Fvwm;;        icewm) WMnow=Icewm;;        twm) WMnow=Twm;;        wmake) WMnow=WMmake;;        startxfce4) WMnow=Xfce4;;        startkde) WMnow=KDE;;        gnome-session) WMnow=GNOME;;    esac}preXgl(){    if [ -e $HOME/.Xgl-Status-0 ]    then    perl -e 'print "="x80;print " "'    echo -e " Creating necessary links and cache to share libraries "    echo -e " Please stand by ... "    perl -e 'print "="x80;print " "'    sleep 2    sudo ldconfig /opt/Xgl/lib /opt/Xgl/lib/window-manager-settings        /opt/Xgl/lib/xorg/modules/xgl /opt/Xgl/lib/compiz    [ "$?" -eq 0 ] && mv $HOME/.Xgl-Status-0 $HOME/.Xgl-Status-1    sed -i 's/vo=xv,x11/vo=x11,xv/' $HOME/.mplayer/config    fi}postXgl(){    if [ -e $HOME/.Xgl-Status-1 ]    then    perl -e 'print "="x80;print " "'    echo -e " Creating necessary links and cache to share libraries "    echo -e " Please stand by ... "    perl -e 'print "="x80;print " "'    sleep 2    sudo ldconfig    [ "$?" -eq 0 ] && mv $HOME/.Xgl-Status-1 $HOME/.Xgl-Status-0    sed -i 's/vo=x11,xv/vo=xv,x11/' $HOME/.mplayer/config    fi}startX(){    currentWM    case "$wmnow" in        gnome-session) startx -- :1 &                DISPLAY=:1 metacity &                ;;        startxfce4) startx -- :1 &                DISPLAY=:1 xfwm4 --daemon &                ;;        *) startx -- :1 &                ;;    esac}startXgl(){    export LANG="en_US.UTF-8" # 此处设置界面为英文,不是必需,如果不习惯注销即可    LD_PRELOAD=/usr/lib/libGL.so /opt/Xgl/bin/Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 &    # change xv:fbo to xv:pbuffer for ATI video card    if [ "$wmnow" = "gnome-session" -o "$wmnow" = "startkde" -o "$wmnow" = "startxfce4" ]    then    DISPLAY=:1 LD_LIBRARY_PATH="/opt/Xgl/lib:/opt/Xgl/lib/window-manager-settings:          /opt/Xgl/lib/xorg/modules/xgl:/opt/Xgl/lib/compiz"          compiz --replace gconf &    [ "$wmnow" = "gnome-session" ] && DISPLAY=:1 eval $(dbus-launch --auto-syntax)    DISPLAY=:1 gnome-window-decorator &    DISPLAY=:1 $wmnow &    DISPLAY=:1 /etc/X11/xinit/xinitrc.d/xinput.sh &    else    DISPLAY=:1 $wmnow &    DISPLAY=:1 /etc/X11/xinit/xinitrc.d/xinput.sh &    fi}switchDesktop(){    echo -e " Which Desktop you want to use? Type in the name: "    read TargetDesktop    [ ! -x /usr/bin/switchdesk ] && NotFOUND switchdesk install "The Desktop Switcher"    switchdesk $TargetDesktop}prog="$0"wmnow="xterm"currentWMperl -w -e 'print "=" x80 ;print " "'echo -e " Xstarter helps you to choose the window manager you want to run"echo -e " Use it to do:"echo -e " <1> start your default window manager normally"echo -e " <2> switch to other window manager then start X"echo -e " <3> start Xgl & compiz on your default window manager"echo -e " <4> switch window manager before starting Xgl & compiz"perl -w -e 'print "=" x80 ;print " "'echo -e " before running this, make sure /etc/sudoers modified accordingly"perl -w -e 'print "="x80;print " "'echo -e " your current window manager is $WMnow "echo -e " what to do next? please type in 1, 2, 3, or 4 "echo -e " press any other key to quit "read TODOcase "$TODO" in    1) echo -e" Starting current default window manager "        postXgl        startX        ;;    2) echo -e " Running the Desktop Switcher to change window manager "        switchDesktop || exit 1        postXgl        startX        ;;    3) echo -e " Starting Xgl & Compiz on default window manager "        preXgl        startXgl        ;;    4) echo -e " Starting Xgl & Compiz after switch window manager "        switchDesktop || exit 1        preXgl        currentWM        startXgl        ;;    *) echo -e " Quit now, legitimate inputs are ordinal number 1 to 4 "        exit 1        ;;esac

  使其具有执行权限

  chmod +x /usr/local/bin/Xstarter

  脚本使用方法:

  修改/etc/inittab,将initdefault设定为3,绕过gdm,启动进入控制台;

  运行Xstarter,转换桌面管理器,启动X、Xgl;转换时,只需重启X,无须重启系统;

  运行Xstarter有四个选项:

  ⑴以默认桌面启动X;

  ⑵转换桌面,然后启动X;

  ⑶以默认桌面启动Xgl;

  ⑷转换桌面,然后启动Xgl;

  按Shift + Backspace退出

  请参考提示⑩注意事项

  ⒉几个小提示

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

  gconftool-2 -t int -s /apps/compiz/general/screen0/options/size "5"

  或用配置编辑器手动修改/apps/compiz/general/screen0/options/size键值,这样就是5个侧面了。

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

  yum install inkscape

  运行OpenOffice,制作演示文件,每一幅幻灯保存为一张jpg图片

  运行Inkscape,将图片输出为svg文件(Scalable Vector Graphics)

  将所有的svg文件放入某个文件夹

  保存下面脚本到/usr/local/bin/svg2top

  #!/bin/bash

echo "Give full path of the folder containing SVGs to use as Cube TOP:"read pathsvglist=$(find $path -type f ( -name "*.svg" -o -name "*.png" ) -printf "%p,")gconftool-2 -s /apps/compiz/plugins/cube/screen0/options/images -t list --list-type=string "[${svglist%%,}]"echo "SVGs added"

  运行svg2top

  svg2top 目录绝对路径

  gconftool-2 -t bool -s /apps/compiz/plugins/rotate/screen0/options/snap_top true

  向cube顶上添加演示文件,如产品推介、课程幻灯,

  Ctrl + Alt + 鼠标点击桌面空白处,转动cube显示顶部,

  Space键播放下一张,Esc返回桌面。

  ③如何添加天穹图片

  运行GIMP,制作天穹图片,选择自己喜欢的图片,按合适的比例保存为png格式;图片的比例为

  1024x1024

  1024x2048

  1024x4096

  2048x1024

  2048x2048

  2048x4096

  4096x1024

  4096x2048

  4096x4096

  ...

  最好是2/1、1/2的比例,注意图片越大,资源占用越多。

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

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

  ④如何显示cube的内部

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

  ⑤一些快捷键的默认设置

  切换窗口 Alt + Tab

  排列观看所有窗口 F12

  切换正方体(多边的也行)桌面 Ctrl + Alt + 左方向键/右方向键

  切换正方体桌面,当前窗口跟随 Ctrl + Alt + Shift + 左方向键/右方向键

  手动转到桌面 Ctrl + Alt + 鼠标左键单击桌面空白处

  窗口变透明、不透明 Ctrl + Alt + 鼠标滚轮

  自动缩小 超级键 + 鼠标右键

  手动缩小 超级键 + 鼠标滚轮向上

  手动放大 超级键 + 鼠标滚轮向下

  移动窗口 Alt + 鼠标左键

  挥动窗口 Ctrl + Alt + 鼠标左键(窗口粘附边框)

  改变窗口大小 Alt + 鼠标右键

  最小化窗口 Alt + F9

  最大化窗口 Alt + F10

  显示下层窗口 Alt + 鼠标中键

  减慢动作 Shift + F10

  *所谓超级键就是Win键。

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

  ⑥ATI显卡x300、x700可能遇到键盘无反应、锁定的情况,参考:

  ubuntu xglhowo

  修改xorg.conf的Device部分:

  Section "Device"

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

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

  chcon -t textrel_shlib_t /opt/Xgl/lib/libGL.so

chcon -t textrel_shlib_t /opt/Xgl/lib/libGLU.so

  ⑧注意事项:

  编译安装的操作步骤,均默认为在同一终端内完成;如果使用多个终端,需要设置相应的环境变量;

  使用Xgl时,建议不要进行rpm包安装、yum升级的操作;原因在于,这种安装方法是尽量使系统不受Xgl安装的影响,如果在使用Xgl时进行了系统升级,会因Xgl共享库路径未在系统文件中配置,启动默认X时产生错误的依赖关系;而且运行中Xgl也会因共享库路径变化出错。如果要将Xgl、Compiz作为日常应用,请参考第四部分的方法;

  由于编译时指定了安装位置,卸载时只需删除/etc/profile.d/Xgl.sh、/usr/local/bin/Xstarter和/opt/Xgl目录即可。

  ⑨compiz的gconf键值参考:

  https://wiki.ubuntu.com/compiz

  ⑩排错参考:

  http://gentoo-wiki.com/HOWTO_XGL/Troubleshooting

  ⒊相关资源链接:

  http://www.freedesktop.org/wiki/Software_2fXgll

  http://en.opensuse.org/Xgl

  http://en.opensuse.org/Compiz

  http://gentoo-wiki.com/HOWTO_XGL

  https://wiki.ubuntu.com/XglHowto?highlight=%28xgl%29

  http://compiz.ed3n.com/

  http://gentoo-wiki.com/HOWTO_XGL/Troubleshooting

  四 打包安装Xgl和Compiz

  前文讲述了从源码编译、安装、配置Aiglx和Xgl、Compiz的过程,下面讲一下,如何对源码进行打包,制作成FC5专用的rpm包。

  在fedora rawhide中提供了Aiglx的rpm包,此处不予赘述。

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

  yum install fedora-rpmdevtools

fedora-buildrpmtree

  修改~/.rpmmacros

  %_topdir %(echo $HOME)/rpmbuild

%_prefix /usr/local%_mandir /usr/local/man%_defaultdocdir /usr/local/share/doc%_sysconfdir /usr/local/etc%_smp_mflags -j3#%__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot

  ⒉下载源码包:

  下载我制作的源码包,下载地址如下:

  下载页面

  提取码:

  compiz-cvs 0009972112435392

  xgl-cvs 7117086849938431

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

  rpmbuild --rebuild xgl-cvs_060430.src.rpm

rpmbuild --rebuild compiz-cvs_060430.src.rpm

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

  下载页面

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

  此方法适用于第四部分之rpm包安装,及源码编译安装(需要修改的路径,由/usr/local/变为/opt/Xgl)

  所谓配置无非是两点:

  ——配置显示管理器(displaymanager),使系统启动后启用Xgl server;

  由于Xgl启动时间稍长,所以要延长显示管理器的等待时间,然后添加命令

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

  下面简单介绍一下:

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

  cat /etc/sysconfig/desktop

DESKTOP=GNOMEDISPLAYMANAGER=GNOME

  在这里,桌面环境是GNOME,显示管理器是GNOME(gdm);如果是KDE,则相应地均为KDE(kdm)。

  ②显示管理器所对应的配置文件分别是:

  GNOME: /etc/gdm/custom.conf

  KDE: /etc/kde/kdm/kdmrc

  修改为:

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

  [daemon]

GdmXserverTimeout=30 #修改这里延长等待时间[security][xdmcp][gui][greeter][chooser][debug][servers]0=Standard # 修改这里“覆盖”默认Standard server[server-Standard] # 修改这里添加命令name=Standard server# nvidia 显卡command=/usr/local/bin/Xgl :0 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 -fullscreen# ati 显卡# command=/usr/local/bin/Xgl :1 -ac -accel glx:pbuffer -accel xv:pbuffer -audit 0 -fullscreen# i810 使用i810驱动的intel 显卡# command=/usr/bin/Xgl :0 -accel xv -accel glx:pbuffer -accel xv:pbuffer -ac -audit 0 -br -dpms -dpi 72flexible=true # 使用gdmflexiserver命令更新chooser=false

  如果使用kdm

  [General]

ConfigVersion=2.3StaticServers=:0ReserveServers=:1,:2,:3ServerVTs=-7ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6PidFile=/var/run/kdm.pid[Xdmcp]Enable=falseXaccess=/etc/X11/xdm/XaccessWilling=/etc/X11/xdm/Xwilling[Shutdown]HaltCmd=/sbin/poweroff[X-*-Core]Resources=/etc/X11/xdm/XresourcesSetup=/etc/X11/xdm/Xsetup_0Session=/etc/kde/kdm/XsessionAutoReLogin=falseAllowShutdown=RootSessionsDirs=/usr/share/xsessions,/usr/share/apps/kdm/sessions,/etc/X11/dm/sessionsClientLogFile=.xsession-errors-%s[X-*-Greeter]GUIStyle=BluecurveColorScheme=BlueCurve.kcsrcLogoArea=ClockLogoPixmap=/usr/share/apps/kdm/pics/kdelogo.pngGreetFont=Sans,16,-1,5,75,0,0,0,0,0StdFont=Sans,10,-1,5,50,0,0,0,0,0FailFont=Sans,12,-1,5,75,0,0,0,0,0AntiAliasing=trueUserList=falseShowUsers=NotHiddenMinShowUID=500SortUsers=trueFocusPasswd=trueEchoMode=OneStarUseBackground=falseBackgroundCfg=/etc/kde/kdm/backgroundrcForgingSeed=1108476160Preloader=/usr/bin/preloadkdeUseTheme=trueTheme=/usr/share/apps/kdm/themes/Bluecurve# 看这一段,修改的是ServerCmd,所做的修改依显卡而定 NVidia显卡xv:fbo ATI显卡xv:pbuffer Intel显卡#(支持的型号)同NVidia xv:fbo[X-:*-Core]ServerAttempts=5 # 修改这里增加尝试次数ServerTimeout=60 # 修改这里延长超时等待ServerCmd=/usr/local/bin/Xgl :0 -ac -accel glx:pbuffer -accel xv:fbo -fullscreen -audit 0 # 修改这里添加命令ServerArgsLocal=-nolisten tcpAllowShutdown=All[X-:*-Greeter]PreselectUser=PreviousFocusPasswd=trueLoginMode=DefaultLocal[X-:0-Core][X-:0-Greeter]

  ③现在系统启动后Xgl就会自动启动了,但是还不够,如果不使用Compiz窗口管理器,则使用开发版的Xgl Server就没有意义了,

  毕竟从性能完备、稳定性和速度上,Xgl还有不足。要启用Compiz窗口管理器,对不同的桌面环境需要做不同的配置

  首先,制作一个脚本:/usr/local/bin/compizrc

  #!/bin/sh

## compiz plugins load order: decoration wobbly fade minimize cube rotate zoom scale move resize place switcher#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 &/usr/local/bin/gnome-window-decorator > /tmp/gnome-window-decorator-`id -un`-`date +%s`.log 2>&1 &

  使其可执行

  chmod 755 /usr/local/bin/compizrc

  如果使用GNOME,则:

  打开 桌面 → 首选项 → 更多首选项 → 会话

  选择“启动程序”标签,添加启动程序/usr/local/bin/compizrc

  保存会话

  如果使用KDE,则:

  制作自动启动程序桌面文件 ~/.kde/Autostart/Compiz.desktop

  [Desktop Entry]

Name[en]=Compiz Window ManagerName[zh_CN]=Compiz 窗口管理器Comment[en]=Compiz - Composite Window ManagerComment[zh_CN]=Compiz - 混合窗口管理器Exec=/usr/local/bin/compizrcType=ApplicationCategories=Application;UtilityEncoding=UTF-8

  如果使用Xfce,则:

  [General]

SessionName=DefaultSessionName[de]=StandardDisableTcp=True[Failsafe Session]Count=4Client0_Command=/usr/local/bin/compizrc # 修改这里添加命令,替代xfwm4Client0_PerScreen=FalseClient1_Command=xfce4-panelClient1_PerScreen=TrueClient2_Command=xftaskbar4Client2_PerScreen=TrueClient3_Command=xfdesktopClient3_PerScreen=False[Splash Screen]Engine=mice

  经过上述配置,即可以图形方式进行重启系统,Xgl和Compiz自动运行;经过测试gdm或kdm均可正常运行。

  ④以文本界面启动,如何自动运行Xgl & Compiz

  很多人像我一样,是喜欢启动进入控制台(Console)的,(原来在这说了句废话:^P)其实Linux控制台下的功能就很强悍了,只要你习惯;

  这时就需要一个启动脚本,下面是我写的一个简单脚本,供参考:

  #!/bin/bash

# written by aaccdd(thomas.zhuzhy@gmail.com)# progname: startXgl# save as /usr/local/bin, or wherever you'd like to# What will startXgl do:# 1st, check out which desktop you're going to run# if that is one of GNOME, KDE, XFCE, proceed# otherwise, start default X# 2nd, check out whether NV/ATI Driver installed"# with a possitive result, proceed to start# Xgl and Compiz## start Xgl#startXgl(){    VCARD=; VCDRNV=0; VCDRATI=0; VCDRINTEL=0    [ -n "$(/sbin/lspci|sed -n '/VGA.*nVidia/p')" ] && VCARD=nv    [ -n "$(/sbin/lspci|sed -n '/VGA.*ATI/p')" ] && VCARD=ati    [ -n "$(/sbin/lspci|sed -n '/VGA.*Intel/p')" ] && VCARD=intel    case "$VCARD" in    nv) [ -n "$(sed -n '/nvidia/p' /etc/X11/xorg.conf)" ] && VCDRNV=1        [ "$VCDRNV" -eq 0 ] && echo -e " Driver not installed" && exit 1        Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 &        ;;    ati) [ -n "$(sed -n '/fglrx/p' /etc/X11/xorg.conf)" ] && VCDRATI=1        [ "$VCDRATI" -eq 0 ] && echo -e " Driver not installed" && exit 1        Xgl :1 -ac -accel glx:pbuffer -accel xv:pbuffer -audit 0 &        ;;    intel) [ -n "$(sed -n '/i810/p' /etc/X11/xorg.conf)" ] && VCDRINTEL=1        [ "$VCDRINTEL" -eq 0 ] && echo -e " Driver may not be supported" && exit 1        Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo -audit 0 &        ;;    *) startx ;;    esac    /usr/local/bin/compizrc    DISPLAY=:1 eval $(dbus-launch --auto-syntax)    DISPLAY=:1 $wmnow &    DISPLAY=:1 exec /etc/X11/xinit/xinitrc.d/xinput.sh}wmnow=which xterm 2>/dev/null && wmnow="xterm"if [ -e $HOME/.Xclients-default ]then    wmnow=$(sed -n 's/^WM="(.*)"$/1/p' $HOME/.Xclients-default )elif [ $(which gnome-session 2>/dev/null) ]    then wmnow="gnome-session"elif [ $(which startkde 2>/dev/null) ]    then wmnow="startkde"ficase "$wmnow" in    gnome-session|startkde|startxfce4) startXgl;;    *) startx;;esac

  有人说为什么是display :1而不是0呢?这要看你的机器配置和运行方式,0不能行就尝试1。而这个脚本远不完善,

  不是说运行就个脚本不成功,就不能运行Xgl & Compiz,请根据自己的实际情况修改、使用。

  如果也想登录自动启动,则修改 ~/.bash_profile

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

  ⑤测试是否安装成功:

  到这里基本完成了配置,剩下的就是运行了。建议新建一个用户,如compiz测试一下。实际上,安装完rpm包后,

  不需要重启系统就可以使用了。当然前提是测试成功。

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

  Xgl :1 -ac -accel glx:pbuffer -accel xv:fbo &

  如果是ati显卡使用xv:pbuffer;如果报错,Badlength...,Xgl前使用参数LD_PRELOAD=/usr/lib/libGL.so 。

  如果成功,你会看到X启动,有一个叉形的鼠标标记。这说明Xgl运行成功。

  有人又问了,为什么是:1,呢?注意一下,如果你是图形启动,此时:0已经占用了。

  DISPLAY=:1 compiz --replace gconf &

DISPLAY=:1 gnome-window-decorator &

  如果窗口变成蓝色,出现鼠标键头,Compiz已经运行。

  DISPLAY=:1 xterm &

  这时你就看到一个在Xgl & Compiz环境下xterm终端的样子了。

  ⑥为什么我运行不了?

  首先看的硬件配置,参考:http://gentoo-wiki.com/HOWTO_XGL#Hardware_Prerequisites

  其次,查看是否配置文件有误

  再次,查看gconf键值是否有误

  补充:

  有兄弟反映运行时打不开DISPLAY, 变通的方法:

  修改startXgl脚本,早几天的脚本里使用的是DISPLAY=:1,改成DISPLAY=:0;

  或修改/etc/X11/xdm/Xservers,添加一行:

  :0 local /usr/bin/X

:1 local /usr/bin/X

  上面说的是图形启动状态;

  fc5的设备由udev管理,在控制台下生成的设备权限,由pam按照系统权限控制文件的设置决定,

  比如显卡设备,默认的权限是600(用户读写)因而当切换用户(root除外)后,是无法使用该设备的。

  解决的办法是修改权限设置。

  举个例子:在默认的控制台权限控制文件中(/etc/security/console.perms.d/50-default.perms)声音和显卡设备权限都是0600,即仅属主读写,要让登录的用户都可以读写(使用),则可生成文件60-custom.perms:

  cat > /etc/security/console.perms.d/60-custom.perms << EOF

=/dev/dsp* /dev/audio* /dev/midi* /dev/mixer* /dev/sequencer /dev/sound/* /dev/beep /dev/snd/*=/dev/nvidia* /dev/3dfx* /dev/dri/card*# device permission definition0666 0666 root0666 0666 rootEOF

  这样,系统启动时会自动设置声音和显卡设备为用户均可读写。

  六 写在后面:

  本文是作者原创,如有错误遗漏,敬请指出。经作者验证,Aiglx启动相对简便,Xgl & Compiz在gnome、kde、xfce上都能

  运行,比较稳定,运行一周多时间里只有一次是手误按了Shift + Backspace杀死了Xgl,没有出现过崩溃现象,多数应用程序运

  行正常。但各人机器配置多有不同,如有不适合之处,请指正批评。本文遵循GPL发布,保留原始发布信息基础上,可以自由修改,

  传播。因按文中所述方法,造成损失的,作者不承担任何责任。

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14102/viewspace-116515/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14102/viewspace-116515/

在 Fedora Core 5 上体验 Aiglx 和 Xgl Compiz(转)相关推荐

  1. linux无法运行sssverify,Synopsys Design Compiler在fedora Core 9下面的安装

    首先转载下文.我是按照这个博文的步骤来的.我安装的平台是FC9,也是单机版安装的.但是我按照以下步骤安装之后,运行dc或者dv,都会出现 fatal: Design compiler is not e ...

  2. Red Hat Linux、rhel 和 Fedora Core 以及 Centos 区别与联系

    1. Red Hat Linux Linux是GNU/Linux的缩写,通常指各种Linux发行版的通称,Red Hat Linux是redhat最早发行的个人版本的linux, 其1.0版本于199 ...

  3. ASP.NET Core MVC上传、导入、导出知多少

    前言 本君已成夜猫子,本节我们来讲讲ASP.NET Core MVC中的上传,这两天在研究批量导入功能,本节顺便简单搞搞导入.导出,等博主弄妥当了再来和大家一并分享. .NET Core MVC上传 ...

  4. 用Virtual PC 2007安裝Fedora Core 9

    前言 這幾天心血來潮 平常就已有用Virtual PC在使用Win 2003 Server和WinXP 昨天又拿Virtual PC灌了Vista 今天想說試灌最近新出的Fedora Core 9 一 ...

  5. Consul在.Net Core中初体验

    Consul在.Net Core中初体验 原文:Consul在.Net Core中初体验 简介 在阅读本文前我想您应该对微服务架构有一个基本的或者模糊的了解 Consul是一个服务管理软件,它其实有很 ...

  6. Fedora core 2下建立Poptop服务器以及常见问题

    一.简介 Poptop ,官方网站上的定义是The PPTP Server for Linux,就是利用PPTP(Point to Point Tunneling Protocol,点到点隧道协议)通 ...

  7. 网络管理 之 Fedora Core 网络配置工具system-config-network介绍

    作者:北南南北 来自:LinuxSir.Org 提要:本文主要介绍Fedora Core 系统中的网络配置工具system-config-network,帮助初学者如何学会配置网络,以及如何设置非路由 ...

  8. Fedora Core 6安装手册

    目录 前言     1.关于Fedora Core         2.关于本手册         3.感谢 1. 背景 2. 理解i386和其他计算机体系 3. 开始安装前         3.1. ...

  9. HMS Core线上Codelabs挑战赛第二期开始

    亲爱的开发者们,准备好了吗? HMS Core线上Codelabs挑战赛第二期赛题来喽! 在第一期:图像畅想的赛题竞逐中,我们收获了一些令人惊喜的作品. 在接下来的赛题中,期待开发者们带来更多精彩创作 ...

最新文章

  1. [Arduino] 学习总结小合集(更新ING)
  2. 了解零信任-SDP关系
  3. springboot 微服务_使用 Docker 部署 Spring Boot微服务
  4. Learning to Count via Unbalanced Optimal Transport
  5. wfp网络过滤框架总结(一)
  6. Excel利用公式向导不会函数也可去掉文本2端空格
  7. 【CSS3】CSS3动画——我离前端的炫酷又近了一步
  8. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历
  9. 使用OpenCV+Tensorflow跟踪排球的轨迹
  10. 基础语法值c++提高编程
  11. Appium-Press keycode(按键代码)
  12. 夕阳西下,小卤蛋和妲己姐姐竟然手牵手讨论Spring...
  13. redis集群值插槽算法灵魂拷问
  14. 计算机专业学生必看的网站
  15. Bootstrap相关案例、教程、设计器
  16. SAP 银企直连 维护与安全登录用户的银行通讯
  17. 何谓BLDC电机?BLDC电机是如何旋转的?
  18. Nginx --高阶
  19. Ubuntu中火狐浏览器Firefox打不开网页
  20. Android 单元测试,从小白到入门开始

热门文章

  1. JavaScript类型转换
  2. nodejs 前端 常用库
  3. iview官网排错之ref问题
  4. 祖传店铺倒了一半,姆巴佩的这个老乡却要在非洲造一个阿里巴巴
  5. OpenCV矩形rect的操作
  6. 原生态的ajax如何上传文件,原生ajax和iframe框架实现图片文件上传的两种方式
  7. 谁说VIM不是IDE(转池建强博客文章)
  8. 设置小米5手机拒接中介骚扰标志的电话
  9. 【微语】第六周(12.21~12.27)
  10. 在Excel中调用Python脚本,实现数据自动化处理