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 相关的包
[编辑] 安装显卡驱动
- Xgl 的显卡支持情况可以参照 gentoo-wiki http://gentoo-wiki.com/HARDWARE_Video_Card_Support_Under_XGL
要确认您是否需要安装私有驱动,可以看 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 了。
