环境和配置
Kubuntu 9.10
GeForce 7300LE
nVidia官方驱动 185.18.36
Philips 109B7 //显示器的型号其实无关紧要,至少以我目前的了解
ViewSonic A71f
闲话
nVidia的中文名字是”英伟达”……怎么听都像壮阳药……所以我决定假装N记没有中文名字。
激活双显示器
安装完系统之后ubuntu自己会侦测到7300然后提示安装nvidia的官方驱动,目前是185.18.36
驱动装完说要重启,为了避免各种意外,我听话。重启完之后在kickoff->applications->settings里面找到nvidia的控制面板,X server display configration里面就可以激活第二个显示器了,并可以做相关配置。配置完之后要Save to X Configuration File.也就是/etc/X11/xorg.conf 可是xorg.conf是root的644权限,所以在普通用户帐号下会保存失败。只能先保存到用户自己的目录下或者选择Show Preview查看生成的配置文件,然后用sudo vim或者sudo kate打开/etc/X11/xorg.conf ,手工编辑。
Xinerama模式
在这个模式下有两块Screen,分别显示在两台Monitor上。和TwinView模式在显示效果上有什么区别自己试试就知道了。在这个模式下很多特效不能开启,下面再详细说。
TwinView模式
在这个模式下只有一块Screen,延伸到两台Monitor上。
克隆模式
两台Monitor显示一样的内容。
一些弯路
在折腾compiz和驱动失败,最终决定放弃xinerama的时候,我忘了开启TwinView或者克隆模式,并且虽然关闭xinerama,但仍配置了两块Screen.这时候Secondary monitor虽然被激活,但是只显示黑色的背景,鼠标移进去的话显示为xserver原生的叉。并且在primary monitor上可以观察到两个screen重叠在一起。我尝试了调节screen1的坐标和monitor1的坐标,证实是徒劳的。也就是除非开启xinerama,否则xserver无法把第二个screen放置在别的monitor上。
最后激活了TwinView模式并且只保留了一个screen和一个monitor。虽然secondary monitor比较小所以screen有一部分永远留在了扭曲虚空,但是不太影响使用。
Xinerama和Composite的冲突
开启Xinerama模式之后,Kubuntu的特效消失了,在控制中心提示开启特效需要的Composite和Damage扩展无法启用。Google之后发现Xinerama模式和特效的冲突是广泛现象。进一步的搜索之后我知道特效是主流窗口管理器中的Compositing组件实现的。不幸的是,Gnome的Metacity,KDE的Kwin和独立的Compiz的compositing都和xinerama有冲突。有观点认为compiz在这方面做的最好,但是我尝试切换到compiz之后问题依旧。
关于nVidia,看到一个帖子说它的驱动实现compositing的方式依赖于glx,而在实现xinerama的时候驱动程序则要关闭glx,于是到目前为止在N卡上用双显示器开xinerama是个悲剧。
Compiz和Kwin
Compiz是一个历史悠久且强大的窗口管理器,Kwin和Metacity都从它那里抄走不少特效。然而在KDE4下,Compiz比Kwin速度慢,肉眼可以感觉到的级别。并且也没有解决我的问题。更关键的是我已经很习惯Kwin的快捷键了。所以最后还是用回Kwin了。
最后附上TwinView模式下的xorg.conf,很多xinerama模式下的配置注释掉之后也保留在里面,供参考
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 1.0 (buildd@palmer) Sun Feb 1 20:21:04 UTC 2009
Section “ServerLayout”
Identifier “Layout0″
Screen 0 “Screen0″ 0 0 #在TwinView下只配置一块Screen
InputDevice “Keyboard0″ “CoreKeyboard”
InputDevice “Mouse0″ “CorePointer”
EndSection
Section “Files”
#略
EndSection
Section “Module”
Load “dbe”
Load “extmod”
Load “type1″
Load “freetype”
Load “glx”
EndSection
#xinerama默认是关闭的,而twinview是在screen section开启的
#Section “ServerFlags”
# Option “Xinerama” “1″
#EndSection
Section “InputDevice”
#略
EndSection
Section “Monitor”
# HorizSync source: edid, VertRefresh source: edid
Identifier “Monitor0″
VendorName “Unknown”
ModelName “Philips PH109B7″
HorizSync 30.0 – 92.0
VertRefresh 50.0 – 160.0
Option “DPMS”
EndSection
#twinview模式只配置一个monitor就够了
#Section “Monitor”
# # HorizSync source: edid, VertRefresh source: edid
# Identifier “Monitor1″
# VendorName “Unknown”
# ModelName “ViewSonic A71f”
# HorizSync 30.0 – 70.0
# VertRefresh 50.0 – 160.0
# Option “DPMS”
#EndSection
Section “Device”
Identifier “Device0″
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 7300 LE”
BusID “PCI:1:0:0″
Screen 0
#这些选项都是默认值,不需要显式声明了
# Option “RenderAccel” “1″
# Option “AllowGLXWithComposite” “1″
# Option “AddARGBGLXVisuals” “1″
# Option “DisableGLXRootClipping” “1″
EndSection
#twinview模式只配置一张显卡就够了
#Section “Device”
# 略
#EndSection
Section “Screen”
Identifier “Screen0″
Device “Device0″
Monitor “Monitor0″
DefaultDepth 24
#激活twinview
Option “TwinView” “1″
Option “TwinViewXineramaInfoOrder” “CRT-0″
#两台显示器的分辨率、刷新率和位置都是在这里配置的,+1024+0是以像素为单位的坐标
Option “metamodes” “CRT-0: 1280x1024_85 +1024+0, CRT-1: 1024x768_85 +0+0″
SubSection “Display”
Depth 24
EndSubSection
EndSection
#不需要screen1了
#Section “Screen”
# Identifier “Screen1″
# Device “Device1″
# Monitor “Monitor1″
# DefaultDepth 24
#Option “TwinView” “0″
# Option “metamodes” “CRT-1: 1024x768_85 +0+0;”
# SubSection “Display”
# Depth 24
# EndSubSection
#EndSection
#也不需要extensions,默认开启的。
#Section “Extensions”
# Option “Composite” “1″
# Option “Damage” “1″
#EndSection
Posted via email from Meow and Grrr of a Stray Cat