|
|
欢迎大家访问我的博客:http://my.donews.com/lonecat/
几个月前就听说 XGL 这个东西了,不过一直都是看抓图,感觉也没有什么特别的。前几天看了别人的 XGL 桌面,就开始心里痒痒的,想要在自己的机器上试一把。经过了两天的奋战,终于把这个东西搞定了,现把自己安装的过程跟大家分享一下。
很长时间以来,我都是使用 Debian 的,虽然知道 Ubuntu Dapper 上安装 XGL 实在是很方便,但又觉得懒得换系统,所以还是在 Debian 上安装。由于 Debian 官方尚未提供对 XGL 提的支持,因此在 Debian 上安装 XGL 还是有一点麻烦的。而且在网络上搜索时搜索到的也都是 Ubuntu、SUSE、Gentoo 的资料,因此也比较容易丧失信心。
下面笔者就简述一下安装 XGL 的步骤:
1. 硬件准备
请检查自己的硬件是否支持 XGL。笔者使用的是 HP NC6000 笔记本,它配备的是 ATI Mobility Radeon 9600 M10 显卡。笔者只是使用了 fglrx 模块,并没有使用什么特别的选项。
2. 安装驱动程序
目前在 Debian 上安装 ATI 的官方驱动并不困难,只要安装 fglrx-driver 并自己编译 fglrx 内核模块就可以了。关于这个部分,读者可以参考相关材料。
3. 安装 XGL 相关的软件包。由于 Debian 官方并未提供软件包,因此要安装非官方的软件包,这些软件包是使用 Ubuntu 的 XGL 包修改后制作的。关于这一部分的详情,可以参考 [1]。
3.1. 将如下内容添加到 /etc/apt/sources.list 中:
deb http://www.prato.linux.it/~mnencia/debian xgl/
3.2. 在 /etc/apt/preferences 中添加
Package: *
Pin: origin www.prato.linux.it
Pin-Priority: 981
3.3. apt-get update 后 apt-get install xserver-xgl、compiz-gnome、libglitz-glx1 和 libgl1-mesa-glx 这四个软件包。其中需要注意的是,由于 Debian 自带的 libgl1-mesa-glx 比上述源中的新,因此要注意安装这个软件包时需要特殊的选项。譬如:
apt-get install libgl1-mesa-glx=6.4.1-0.4xgl1
4. 启动 XGL
启动 XGL 有很多种方法,譬如直接在 GDM 中启动,或者在 Session 中启动。关于不同的启动方法的详细信息,可以参考 [2]。
4.1. 修改 gdm 配置
在很多文章中的介绍都是直接修改 GDM 的配置文件 gdm.conf。笔者开始的时候也是使用这种方法的,但在启动 GDM 之后却怎么都看不到登录的界面。在这个问题上笔者卡了很久,最终在一些文章中看这是一个 bug。由于 XGL 启动需要十秒多一些,而 gdm 的超时设定的是十秒,因此 GDM 就没法和 XGL 一起工作了。目前的 GDM 已经增加了一个选项可以设定超时的时间,不过笔者并未实验成功。
4.2. 在 Session 中启动
在一个特定的 Session 中启动 XGL 是一种比较简单且容易实现的方法,最重要的是使用这种方法可以随时停用 XGL 而不必修改配置文件。具体的方法如下:
(1) 创建一个 /usr/local/bin/startxglgnome 文件并加 +x,其内容如下(如果非 ATI 显卡,请 参考 [2]):
#!/bin/sh
Xgl -fullscreen :1 -audit 0 -ac -br -accel glx:pbuffer -accel xv:pbuffer & sleep 2 && DISPLAY=:1 gnome-session
(2) 创建 /usr/share/xsessions/xglgnome.desktop,内容如下:
[Desktop Entry]
Encoding=UTF-8
Name=Xgl GNOME
Comment=Start an Xgl Session
Exec=/usr/local/bin/startxglgnome
Icon=
Type=Application
(3) 重启 gdm
GDM 重启后,在 Sessions 中将会有一个新的项目 Xgl GNOME,选择它,应当就可以启动 XGL 了。
5. 启动 compiz
compiz 是一个窗口管理器,它与传统的窗口管理器的最大不同就是它支持 Composite,如果不使用这个窗口管理器,整个系统的运行都会非常慢,且无法看到任何特殊效果。compiz 应当在 gnome-session 运行之后启动,比较简单的方法是让 gnome-session 直接启动它:
5.1. 创建 compiz 的配置
执行命令
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
这一步是非常重要的,否则即便启动了 compiz 也看不到任何效果。
5.2. compizrc
创建一个 /usr/local/bin/compizrc 文件并 +x,其内容如下:
#!/bin/bash
# Start compiz within gnome-session
if [ `ps -A -o comm | grep -c '^Xgl$'` == "1" ]; then
DISPLAY=:1 LD_LIBRARY_PATH=/usr/lib/fglrx/diversions compiz --replace gconf &
DISPLAY=:1 gnome-window-decorator &
# DISPLAY=:1 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"
else echo "${0}: Error: Compiz and g-w-d not launched. Xgl not running?"
fi
此处有一个问题需要注意,就是 LD_LIBRARY_PATH=... compiz ... 这一行,之所以要设定 LD_LIBRARY_PATH 是因为 compiz 需要原装的 libGL.so,而 fglrx-driver 用自己的 libGL 替换掉了原先的文件,因此需要通过这个环境变量让 compiz 找到正确的库。否则会出现 GLX_EXT_texture_from_pixmap missing 的错误。注意,并不是所有的驱动都会象 fglrx 这样提供自己的 libGL,因此需要根据具体的情况来修改。
编辑好这个文件之后,可以直接执行它。如果正常,这一步过后就可以看到 XGL 的效果了。
5.3. 自动启动 compiz
启动 gnome-session-properties,并在 Startup Programs 中加入 /usr/local/bin/compizrc ,这样 compiz 将会自动启动并替换 Metacity。
到此为止,XGL 的配置就基本完成了,现在就可以享受一下三维桌面的效果了。
总结:
以前我一直以为 XGL 只是一个三维的窗口管理器,现在知道 XGL 实际上是一个 Xserver,它接收客户发来的普通的 X 绘图命令并将其翻译成为 OpenGL 的指令并通过 Xorg 绘制出来。其工作原理类似于 Xnest,只是完成的工作比 Xnest 更多。
compiz 是一个窗口管理器,它通过模块来实现各种各样的效果。因此,对于要开启或关闭某个效果,只要其后或禁用某个模块就可以了。而人们也可以通过编写更多的模块来实现更多的特殊效果,关于 compiz 的更多内容,可以参考 [3]。
一直以来人们都认为 Unix 系统的设计思想是想当出色的,XGL 的出现又一次证明了这一点。界面上如此之大的一个变化,对于 X 整体的结构却没什么太大的影响,只是在中间加了一层类似于代理的东西就搞定了,Unix、X 等软件的结构确实值得我们好好学习。
参考文献
[1] http://www.ee.oulu.fi/~sta/howto/xgl-debian.html
[2] http://gentoo-wiki.com/HOWTO_XGL
[3] http://www.compiz.org/
现在的心情
刚刚配置好 XGL 的时候,会觉得很兴奋很炫。但静下心来,能看到的只是差距,如果自己永远停留在配置、使用的层面上,那永远都只能 google 别人的 HOWTO,没有尽头…… |
|