Xgl HowTo

出自Ubuntu中文


  • 本文已经失效!
  • nvidia、ati 和 Interl 显卡已经可以用 Xorg7.1 自带的 aiglx , 不再需要额外的 XGL
  • compiz-quinn 已经改名为 Beryl , 原先的 compiz-quinn 源不再可用

.


  • 因为 Xgl 里的混合管理器 compiz 已经升级,用 csm 代替了原先的 gconf , 原先的一些 Howto 已经失效, 所以另写一篇。
  • . 适用于 Ubuntu 6.10 Edgy , 与及更新后的 Ubuntu 6.06.1 dapper。提及 关于在 KDE, Gnome, XFCE 里使用 Xgl

.




目录

[编辑] 预备知识

Xgl 是 Novell/SUSE 开发的一个 OpenGL 的 X server ,配合 compiz 混合管理器可以实现很多高可用性的桌面特性。 Xgl 有两个后端, glx 和 xegl 。glx (或说 Xglx ) 是一个寄生 X server , 需要依附在常规的 Xorg 上 (有些类似 Xnest , 一个在 X 窗口里的 X , 常用来实现嵌套窗口里的 GDM 登录) ; 而 xegl 允许直接在 Linux 帖缓冲(framebuffer) 上运行 Xgl , 不需要额外的 Xorg,不过 xegl目前只能在 ATI R200 显卡的 Linux 上运行。 一般说的 Xgl 指的是 Xglx ,需要先启动 常规的 xorg , 再在 Xorg 上运行 Xgl。 Xgl 必须配合混合管理器使用才能实现全部功能, compiz 是一个带混合管理的窗口管理器。 基本上,就是要设法启动一个全屏的 Xgl , 让 kde/gnome/xfce 显示在 Xgl 里,再用 compiz 替换掉 kde/gnome/xfce 原先的窗口管理器。

所以使用 Xgl 可以需要做下面几件事情:

  • 让 Xorg 支持 3D 加速 (可能需要安装 nvidia/ati 显卡私有驱动)
  • 给 gdm/kdm 登录管理器增加 Xgl 会话类型
    • 让在 Xgl 会话里启动全屏的 Xgl
    • 让 kde/gnome/xfce 显示在 Xgl 窗口里( 改 DISPLAY )
    • 用 compiz 窗口管理器替换掉 kde/gnome/xfce 原先的窗口管理器( 杀掉 kwin/metacity/xfwm4 , 用 compiz-manager 启动 compiz )

[编辑] 准备工作

可能需要安装显卡私有驱动,需要安装 Xgl 和 compiz 相关的包

[编辑] 安装显卡驱动

要确认您是否需要安装私有驱动,可以看 glxinfo 命令输出的 direct rendering ,

比如执行:

glxinfo | grep rendering

如果已经显示为 direct rendering: Yes , 那么就不需要再使用私有驱动了。


  • 如果显示为 direct rendering: No , 就有可能需要安装私有驱动了, NVIDIA 官方私有驱动是 nvidia-glx , ATI 官方私有驱动是 fglrx 。
  • . 注意并不是所有 nvidia/ati 显卡都适合安装私有驱动,
  • ATI R300 及以上显卡必须用 ati 私有 fglrx 驱动才支持 3D 加速
  • ATI R300 以下显卡通常使用 Xorg 自带驱动更合适,所以旧 ATI 显卡就不要安装 ati 私有 fglrx 驱动了
  • 旧的 nvidia 显卡,如 TNT2 之类 ,需要安装 nvidia-glx-legacy 而不是 nvidia-glx

[编辑] 安装私有驱动

请先确保 您的 apt 源里有 main restricted universe multiverse 仓库, 因为 nvidia/ati 私有显卡驱动在 restricted 仓库里

  • - 对于 nvidia 显卡,可以这样安装 nvidia 私有 glx 驱动:
sudo apt-get install nvidia-glx
sudo nvidia-xconfig
sudo depmod -a ; sudo modprobe nvidia

- 对于 ati 显卡,可以这样安装 ati 私有 fglrx 驱动:

sudo apt-get install xorg-driver-fglrx     fglrx-control
sudo aticonfig --initial
sudo aticonfig --overlay-type=Xv
sudo depmod -a ; sudo modprobe fglrx

[编辑] 增加 Xgl 和 compiz 的 apt 源

Ubuntu 官方源有部分 Xgl 和 compiz 的包, 但是我们还是使用 compiz 的源吧

- Dapper 请在 /etc/apt/sources.list 加入:

#deb http://media.blutkind.org/xgl/  dapper main aiglx
deb http://www.beerorkid.com/compiz dapper main aiglx
#deb http://ubuntu.compiz.net/  dapper main aiglx

- Edgy 请在 /etc/apt/sources.list 加入:

#deb http://www.beerorkid.com/compiz    edgy    main-edgy       aiglx-edgy
deb http://media.blutkind.org/xgl/      edgy    main-edgy       aiglx-edgy
#deb http://ubuntu.compiz.net/          edgy    main-edgy       aiglx-edgy

总之上面给出的 3 个 apt 源, 自己选一个最快的就行。

- 修改好后记得执行:

sudo apt-get update

更新

[编辑] 安装需要的包

- 需要安装这些,执行:

sudo apt-get install  xserver-xgl  compiz  compiz-plugins  compiz-manager  csm  cgwd  cgwd-themes   libglitz-glx1   libgl1-mesa

[编辑] 增加 Xgl 项

需要在 GDM/KDM 里增加 Xgl 会话项,好让 GDM/KDM 登录界面里可以选 Xgl 会话。

对 KDE, Gnome, XFCE 分别写为 KDE Xgl, Gnome Xgl, XFCE Xgl 。

[编辑] 使用 KDE Xgl

- 增加文件 /usr/share/xsessions/kde-xgl.desktop :

[Desktop Entry]
Encoding=UTF-8
Name=KDE XGL
Exec=/usr/bin/startkdexgl.sh
Icon=
Type=Application

- 增加文件 /usr/bin/startkdexgl.sh :

#!/bin/bash -v
#
# start a Xgl session
#
# Author: huangjiahua
#
# Depends:  compiz  compiz-plugins cgwd cgwd-themes  xserver-xgl    xfce4 metacity  compiz-manager csm  libgl1-mesa  libglitz-glx1
#Xgl -fullscreen :3 -ac &
Xgl -fullscreen :3 -ac -accel glx:pbuffer -accel xv:pbuffer -dpi 96  &
export DISPLAY=:3
sleep 2s
/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || true
/usr/bin/xrdb -merge ~/.Xresources
#for i in /etc/X11/Xsession.d/* ; do
# source $i
#done
. /etc/X11/Xsession.d/*im-switch
#export XMODIFIERS=@im=SCIM ; fcitx || scim -d
domycompiz(){
## for the drivers bug
export LD_PRELOAD=/usr/lib/libGL.so.1.2
#xfwm4 &
sleep 5s
killall kwin
## about compiz-manager
( pidof compiz-manager || compiz-manager || compiz --replace dbus csm ) &
sleep 1s
# compiz --replace dbus csm
## launch cgwd
sleep 1s
mkdir -p ~/.cgwd/theme
dbus-launch cgwd --replace &
/usr/bin/xmodmap -e "keycode 22 = BackSpace"   # for  shift + Backspace
}
domycompiz &
startkde
# unlock
rm -f /tmp/.X3-lock  /tmp/.X11-unix/X3

添加的 /usr/bin/xmodmap -e "keycode 22 = BackSpace" 是为了 Xgl 里避免按 shift + Backspace 会杀掉 X - 要记得让 /usr/bin/startkde4xgl.sh 可执行:

sudo chmod +x  /usr/bin/startkde4xgl.sh

[编辑] 使用 Gnome Xgl

- 增加文件 /usr/share/xsessions/gnome-xgl.desktop :

[Desktop Entry]
Encoding=UTF-8
Name=Gnome XGL
Exec=/usr/bin/startgnomexgl.sh
Icon=
Type=Application

- 增加文件 /usr/bin/startgnomexgl.sh :

#!/bin/bash -v
#
# start a Xgl session
#
# Author: huangjiahua
#
# Depends:  compiz  compiz-plugins cgwd cgwd-themes  xserver-xgl    xfce4 metacity  compiz-manager csm  libgl1-mesa  libglitz-glx1
#Xgl -fullscreen :3 -ac &
Xgl -fullscreen :3 -ac -accel glx:pbuffer -accel xv:pbuffer -dpi 96  &
export DISPLAY=:3
sleep 2s
/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || true
/usr/bin/xrdb -merge ~/.Xresources
#for i in /etc/X11/Xsession.d/* ; do
# source $i
#done
. /etc/X11/Xsession.d/*im-switch
#export XMODIFIERS=@im=SCIM ; fcitx || scim -d
domycompiz(){
## for the drivers bug
export LD_PRELOAD=/usr/lib/libGL.so.1.2
#xfwm4 &
sleep 5s
killall metacity
## about compiz-manager
( pidof compiz-manager || compiz-manager || compiz --replace dbus csm ) &
sleep 1s
# compiz --replace dbus csm
## launch cgwd
sleep 1s
mkdir -p ~/.cgwd/theme
dbus-launch cgwd --replace &
/usr/bin/xmodmap -e "keycode 22 = BackSpace"   # for  shift + Backspace
}
domycompiz &
gnome-session
# unlock
rm -f /tmp/.X3-lock  /tmp/.X11-unix/X3

- 要记得让 /usr/bin/startgnomexgl.sh 可执行:

sudo chmod +x  /usr/bin/startgnomexgl.sh

[编辑] 使用 XFCE Xgl

- 增加文件 /usr/share/xsessions/xfce4-xgl.desktop :

[Desktop Entry]
Encoding=UTF-8
Name=XFCE XGL
Exec=/usr/bin/startxfce4xgl.sh
Icon=
Type=Application

- 增加文件 /usr/bin/startxfce4xgl.sh :

#!/bin/bash -v
#
# start a Xgl session
#
# Author: huangjiahua
#
# Depends:  compiz  compiz-plugins cgwd cgwd-themes  xserver-xgl    xfce4 metacity  compiz-manager csm  libgl1-mesa  libglitz-glx1
#Xgl -fullscreen :3 -ac &
Xgl -fullscreen :3 -ac -accel glx:pbuffer -accel xv:pbuffer -dpi 96  &
export DISPLAY=:3
sleep 2s
/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || true
/usr/bin/xrdb -merge ~/.Xresources
#for i in /etc/X11/Xsession.d/* ; do
# source $i
#done
. /etc/X11/Xsession.d/*im-switch
#export XMODIFIERS=@im=SCIM ; fcitx || scim -d
domycompiz(){
## for the drivers bug
export LD_PRELOAD=/usr/lib/libGL.so.1.2
#xfwm4 &
sleep 5s
killall xfwm4
## about compiz-manager
( pidof compiz-manager || compiz-manager || compiz --replace dbus csm ) &
sleep 1s
# compiz --replace dbus csm
## launch cgwd
sleep 1s
mkdir -p ~/.cgwd/theme
dbus-launch cgwd --replace &
/usr/bin/xmodmap -e "keycode 22 = BackSpace"   # for  shift + Backspace
}
domycompiz &
#xfce4-panel
#startxfce4
xfce4-session
# unlock
rm -f /tmp/.X3-lock  /tmp/.X11-unix/X3

- 要记得让 /usr/bin/startxfce4xgl.sh 可执行:

sudo chmod +x  /usr/bin/startxfce4xgl.sh

[编辑] 进入 Xgl

注销常规 Xorg 会话, 回到 GDM/KDM 登录界面后, 会话类型选 KDE Xgl , Gnome Xgl 或 XFCE Xgl , 就可以使用 Xgl 了。