分享
 
 
 

在FedoraCore5上体验Aiglx和Xgl&Compiz

王朝other·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

摘要:

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 loginCVS 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/xorgcd /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 Mesacd /opt/CVS/Mesamake linux-dri-x86make install DESTDIR=/usr/local

⑤下载安装 libcom

cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome loginCVS 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 metacitycd /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/bashtitle="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/cairocvs -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 << EOFPKG_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/compizPKG_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/Mesamake 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.bz2cd 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/pkgconfigLD_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/bashecho "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 truegconftool-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.sochcon -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-rpmdevtoolsfedora-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.rpmrpmbuild --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/desktopDESKTOP=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<sound>=/dev/dsp* /dev/audio* /dev/midi* /dev/mixer* /dev/sequencer /dev/sound/* /dev/beep /dev/snd/*<dri>=/dev/nvidia* /dev/3dfx* /dev/dri/card*# device permission definition<console> 0666 <sound> 0666 root<console> 0666 <dri> 0666 rootEOF

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

六 写在后面:

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

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

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

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有