歡迎您光臨本站 註冊首頁

在Fedora Core 5上體驗 Aiglx 、Xgl 和 Compiz

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

1、 什麼是Xgl;

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

Xgl是基於OpenGL上的X服務架構,現在處於開發階段,很多重要的部分還未完成。Xglx是目前唯一使用這種結構的X伺服器,它需要在一個已有的X伺服器,只用於測試和開發目的。Xegl是基於Xgl架構的新一代X伺服器,它將使用EGL擴展獨立地運行在OpenGL上。

它有哪些新的特性呢?

基於OpenGL的X層,使用混合桌面,開啟通往新功能、新機會的大門。以下是一些可能出現的功能,其中一些現在已經實現。我們要破除基於OpenGL的X中看不中用的迷信。

①加倍窗口顯示解析度,應用程序可以用特定的解析度渲染窗口,而與桌面的解析度不同。想像一下梯度背景,這樣的一個窗口或材質只有幾個色素,卻以1600x1200或更大的尺寸顯示。

②快速、簡單的屏幕旋轉、翻轉、搖動、放大。

③高級字體渲染,包括使用材質和分段程序的及時輪廓字體渲染。

④模擬硬體層面,歷史悠久的工作站圖形功能可以用材質混合實現

⑤全屏顏色處理,包括伽瑪糾正、對比增強、模糊、加亮等等。

……

2、什麼是Compiz?

Compiz帶來多種視覺效果,使得Linux桌面變得更方便、功能更強大、更新穎、更容易滿足用戶的特殊需求。Compiz使用OpenGL進行渲染,集窗口管理器與混合管理器於一身;窗口管理器處理屏幕上的應用程序和對話框,而混合管理器則使窗口和圖形混合,產生混合圖像;Compiz同時具有兩者的功能,產生驚人的效果。

Compiz目前只能與Xgl「共事」,Compiz的插件及窗口裝飾器在Gnome和KDE下都能工作。


3、什麼是aiglx?

http://fedoraproject.org/wiki/Re ... ghlight=%28aiglx%29

Aiglx(Accelerated Indirect GL X)是一個旨在為標準桌面啟用GL加速功能的項目,目的在於通過小幅度修改X server、使用添加新協議支持的Mesa升級版和帶有混合管理器版本的metacity,讓用戶稍作改動即可在桌面上使用GL效果,隨意開啟、關閉該功能而無需替代使用中的X server。
代碼是與X 社區相關的上游完成,Fedora Core 5是第一個包括了模塊X包和在適合位置添加適合協議的發布版。Aiglx在X基礎方面已經進行了大量工作,但對實際的渲染效果並沒下太大力氣,希望廣大社區幫助創造有趣、適當的效果。重要的不是此時就推出成品,而是鼓勵社區圍繞其進行開發和實驗。


4、體驗 Aiglx

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


4.1 下載、安裝


①建立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/GL
#cd /opt/CVS/proto/GL
#./autogen.sh
#make
#make 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=/etc
#make
#make install
#ln -s /etc/X11/fs /usr/local/lib/X11/fs


④下載安裝 Mesa 源碼

#cvs -d:pserver:anoncvs@cvs.freedesktop:/cvs/mesa co Mesa
#cd /opt/CVS/Mesa
#make linux-dri-x86
#make 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 libcm
#cd /opt/CVS/libcm
#./autogen.sh
#make
#make install


⑥下載安裝 metacity

#cvs -d:pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome co metacity
#cd /opt/CVS/metacity
#./autogen.sh --enable-compositor
#make
#make install


4.2 配置


①啟用混合管理器

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

或使用配置管理器設置/apps/metacity/general/compositing_manager鍵值


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

Section "extensions"
Option "Composite"
EndSection
Section "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.com
zenity --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 false
else
# turn on the AIGLX Service
gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool true
fi

保存文件,使其可執行

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


4.3 演示和已知問題


①演示

最小化之一: 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/Re ... 5918f1cc57bddbbc129


5、 體驗 Xgl 和 Compiz

本文的重點是在不破壞原有系統的基礎上,使普通用戶體驗 Xgl & Compiz的新效能。

默認情況是安裝路徑為/opt/Xgl,沒有進行(二)部分所做下載


5.1 下載安裝


①建立CVS源碼目錄,下載源碼包:

#mkdir /opt/CVS

下載cvs源碼的cairo, libsvg, libsvg-cairo, mesa, xorg/glitz, xkbfile, glxproto, drm, compiz, FixesProto, ScrnSaverProto, CompositeProto, 下載control-center-2.14.0源碼

#cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/mesa login
#cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/mesa co Mesa
#cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/cairo co glitz cairo libsvg libsvg-cairo
#cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co -r xgl-0-0-1 xserver/xorg
#cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co lib/xkbfile proto/GL
#cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/dri co drm
#cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co app/compiz
#cvs -d:pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co proto/Composite proto/Fixes proto/ScrnSaver
#wget http://ftp.gnome.org/mirror/gnom ... nter-2.14.0.tar.bz2


②編譯安裝

編譯安裝glitz

#cd /opt/CVS/glitz
#./autogen.sh --prefix=/opt/Xgl
#make
#make install

編譯安裝 control-center

#cd /opt/CVS/
#tar xjvf control-center-2.14.0.tar.bz2
#cd control-center-2.14.0/
#./configure --prefix=/opt/Xgl --sysconfdir=/etc
#make
#make install

編譯安裝 libsvg

#cd /opt/CVS/libsvg
#./autogen.sh --prefix=/opt/Xgl
#make
#make instal

編譯安裝 cairo

#cd /opt/CVS/cairo
#./autogen.sh --prefix=/opt/Xgl
#make
#make install

添加如下內容到: ~/.bashrc

PKG_CONFIG_PATH=/opt/Xgl/lib/pkgconfig
LD_LIBRARY_PATH=/opt/Xgl/lib
export PKG_CONFIG_PATH LD_LIBRARY_PATH

#source ~/.bashrc

編譯安裝 libsvg-cairo(注意安裝順序,libsvg-cairo依賴cairo,要后裝)

#cd /opt/CVS/libsvg-cairo
#./autogen.sh --prefix=/opt/Xgl/
#make
#make install

編譯安裝 GL proto(proto/GL)

#cd /opt/CVS/proto/GL
#./autogen.sh --prefix=/opt/Xgl
#make install

編譯安裝drm
#cd /opt/CVS/drm
#./autogen.sh --prefix=/opt/Xgl
#make
#make install

編譯安裝Composite,Fixes,ScrnSaver

#cd /opt/CVS/proto/Composite
#./autogen.sh --prefix=/opt/Xgl
#make install
#cd /opt/CVS/proto/Fixes
#./autogen.sh --prefix=/opt/Xgl
#make install
#cd /opt/CVS/proto/ScrnSaver
#./autogen.sh --prefix=/opt/Xgl
#make 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-xprint
#make
#make install

編譯安裝 compiz

#cd /opt/CVS/app/compiz
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/opt/Xgl/lib/pkgconfig/ ./autogen.sh --prefix=/opt/Xgl/ --enable-libsvg-cairo
#make
#make install

有些人編譯遇到gnome、svg選項總是no,原因即在於缺少參數設置

編譯安裝Mesa
#cd /opt/CVS/Mesa
#make linux-dri-x86
#make install DESTDIR=/opt/Xgl

由於CVS源碼變化很快,有時很出現長時間編譯不成功的現象,這時就需要一點耐心了。當然也有替代的方法,就是下載發布版,如mesa cvs編譯不成功就可以用Mesa-6.5,下載地址 自己選一個比較快的鏈接。相應地操作要變為:

#tar xjvf MesaLib-6.5.tar.bz2
#cd MesaLib-6.5
#make linux-dri-x86
#make install DESTDIR=/opt/Xgl


③配置

添加工作路徑

#cat > /etc/profile.d/Xgl.sh << "EOF"
PATH="/opt/Xgl/bin: $PATH"
export PATH
EOF

修改/etc/sudoers,使用戶可以運行ldconfig命令
#visudo /etc/sudoers

添加

#username ALL=NOPASSWD:/sbin/ldconfig

取消對~/.bashrc的修改,刪除添加的內容:

PKG_CONFIG_PATH=/opt/Xgl/lib/pkgconfig
LD_LIBRARY_PATH=/opt/Xgl/lib
export 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-0
NotFound() {
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 "\n"'
echo -e "\t\tCreating necessary links and cache to share libraries\n"
echo -e "\t\tPlease stand by ...\n"
perl -e 'print "="x80;print "\n"'
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 "\n"'
echo -e "\t\tCreating necessary links and cache to share libraries\n"
echo -e "\t\tPlease stand by ...\n"
perl -e 'print "="x80;print "\n"'
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 "\tWhich Desktop you want to use? Type in the name: \n"
read TargetDesktop
[ ! -x /usr/bin/switchdesk ] && NotFOUND switchdesk install "The Desktop Switcher"
switchdesk  $TargetDesktop
}
prog=" $0"
wmnow="xterm"
currentWM
perl -w -e 'print "=" x80 ;print "\n"'
echo -e "\tXstarter helps you to choose the window manager you want to run"
echo -e "\tUse it to do:"
echo -e "\t\t<1>\tstart your default window manager normally"
echo -e "\t\t<2>\tswitch to other window manager then start X"
echo -e "\t\t<3>\tstart Xgl & compiz on your default window manager"
echo -e "\t\t<4>\tswitch window manager before starting Xgl & compiz"
perl -w -e 'print "=" x80 ;print "\n"'
echo -e "\tbefore running this, make sure /etc/sudoers modified accordingly"
perl -w -e 'print "="x80;print "\n"'
echo -e "\t\tyour current window manager is  $WMnow\n"
echo -e "\t\twhat to do next? please type in 1, 2, 3, or 4\n"
echo -e "\t\tpress any other key to quit\n"
read TODO
case " $TODO" in
1) echo -e"\tStarting current default window manager\n"
postXgl
startX
;;
2) echo -e "\tRunning the Desktop Switcher to change window manager\n"
switchDesktop || exit 1
postXgl
startX
;;
3) echo -e "\tStarting Xgl & Compiz on default window manager\n"
preXgl
startXgl
;;
4) echo -e "\tStarting Xgl & Compiz after switch window manager\n"
switchDesktop || exit 1
preXgl
currentWM
startXgl
;;
*) echo -e "\tQuit now, legitimate inputs are ordinal number 1 to 4\n"
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退出


5.2 幾個小提示


①啟動Xgl后運行mplayer需要指定視頻輸出設備為x11,否則Xgl會崩潰。這點在腳本中已經考慮到,會自動修改

②啟動Xgl后不要使用bmp,否則Xgl會崩潰

③如何設置,增加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
# written by cyberorg @ forums.suselinuxsupport.de
echo "Give full path of the folder containing SVGs to use as Cube TOP:"
read path
gconftool-2 -s /apps/compiz/plugins/cube/screen0/options/svgs -t list --list-type=string "[`find  $path -name "*.svg" -printf "%p,"`]"
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 true
gconftool-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鍵。

⑧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


6、 相關資源鏈接

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/


7、 寫在後面;

本文是作者原創,如有錯誤遺漏,敬請指出。經作者驗證,Aiglx啟動相對簡便,Xgl & Compiz在gnome、kde、xfce上都能運行,比較穩定,運行一周多時間裡只有一次是手誤按了Shift + Backspace殺死了Xgl,沒有出現過崩潰現象,多數應用程序運行正常。

[火星人 ] 在Fedora Core 5上體驗 Aiglx 、Xgl 和 Compiz已經有742次圍觀

http://coctec.com/docs/linux/show-post-132732.html