用单独的两块显卡来实现双屏显示,像ATI、nVidia和Matrox的双头显示技术,可以用显卡本身的驱动来解决,具体的 *** 作,在各个驱动的man上都有。但是,有些显卡也可以按照本文的说明来做,前提是把同一个显卡的device节写两遍。
二、硬件准备
两个显卡,前提是你的机器必须可以安装上。典型的配置为:一个AGP,一个PCI或两个PCI。如果机器上有自带的硬显卡,也可以再加上一个AGP,实现两个AGP。(很多服务器主板上都带Rage XL,这个就可以实现两个AGP的显卡。)
据说965G以上的主板自带的显卡也可以实现双显卡,由于没有条件测试,不知道具体结果。但是,945G以下的自带显卡不能用再加一块显卡的方法实现双显卡。因为一旦检测到主板上接有显卡,整合的显卡会被自动屏蔽掉。现在有很多显卡带VGA和DVI输出,可以用一个DVI-VGA的转换器来实现双屏显示。
双显示器有三种基本的显示模式,虽然有很多资料把它说为是两种,但是我觉得把它分为三种更好接受一些。
1、独立模式:两个显示器独立,互不影响。也就是说,一个显示器上的窗口,不可以移动到另一个显示器上去。
2、扩展模式:两个显示器扩展为一个大的显示器。一个窗口,可以移动或扩展到另一台显示器上去。windows中叫做“扩展桌面”。
3、克隆模式:两个显示器上的内容完全一致。如果用来做演示,那么通常就是用的这种模式,一个用来接投影机,一个用来本地显示,供演讲者使用。
四、实现原理
对于独立模式和克隆模式,在xorg.conf里面,配置两个显卡,两个屏幕即可对于扩展模式,还要加上一个“Xinerama”的选项。
五、配置实例
以下配置实例的硬件:一个主板自带的Rage XL和一个Geforce 440 64M显卡,加上两个Philips 107s6显示器。
1、独立模式:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" LeftOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
ModulePath "/usr/X11R6/lib/modules"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/TTF/"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/CID/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection
Section "Module"
Load "dbe"
Load "dri"
Load "extmod"
Load "glx"
Load "record"
Load "xtrap"
Load "freetype"
Load "type1"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psm0"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "PHL"
ModelName "PH107E/V/S/G6"
HorizSync 30.0 - 71.0
VertRefresh 50.0 - 160.0
Option "DPMS"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "PHL"
ModelName "PH107E/V/S/G6"
HorizSync 30.0 - 71.0
VertRefresh 50.0 - 160.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Card0"
Driver "ati"
VendorName "ATI"
BoardName "Rage XL"
ChipSet "ati"
ChipId 0x4752
ChipRev 0x27
BusID "PCI:0:13:0"
EndSection
Section "Device"
Identifier "Card1"
Driver "nv"
VendorName "nVidia Corporation"
BoardName "NV11 [GeForce2 MX/MX 400]"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Card1"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
要点:
1、在配置文件里,要配置两个device,两个Monitor,两个Screen。
2、在ServerLayout节中,需要说明两个显示器之间的关系,用
Screen 1 "Screen1" LeftOf "Screen0"
来说明,在本例中,第二个显示器在第一个显示器左边。
2、扩展模式:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" LeftOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerFlags"
Option "Xinerama" "true"
EndSection
说明:1)为了减少篇幅,只写改变的节。
2)桌面扩展是用“Xinerama”扩展来实现的,这个扩展不需要单独安装,是xorg自带的一个模块。
3)扩展桌面的 *** 作中,程序默认打开的显示器在最左边的显示器上,即使你把第二个显示器设置为左边的显示器。
4)扩展桌面中,第二个显示器没有任务栏。
3、克隆模式:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
# Screen 1 "Screen1" LeftOf "Screen0"
Screen 1 "Screen1" Relative "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
说明:1)为了独立模式比较,保留了独立模式的配置,并把它置为注释。
2)在xorg.conf的man里面,没有提到Clone模式,但是,你以把第二个显示器的像素值和第一个显示器的像素值设置得一样,这样就可以达到Clone的效果。
3)Relative后面的数字,实际上你可以根据显示器的不同,来自行设置上下左右。还可以设置为不整屏,比如:768,200。
六、几个没解决的问题:
1)独立模式中,第二个屏幕的桌面语言一直为英文。但是菜单和其它的都可以显示汉字。
2)独立模式中,任务栏大小设置之后,要重启kde后才起作用。
3)扩展模式中,任务栏没法向左收起。
4)双屏设置,包括三种模式,有时候会搞乱locale设置。本人做的时候,最好没办法,只好把主目录下的.kde全删除掉,又重新配置的字体等。
5)在扩展模式中,最大化窗口只能最大化到一个显示器。但是,即使最大化的窗口,也可以拖到另一个显示器。
注:在G400系列的双头显卡中,可以配置到最大化到两个显示器。其它的显卡不详。
你只有一个显卡,那么你就只能使用 扩展模式和克隆模式
这下面是显示了需要改动的地方,你仔细看看。
桌面扩展是用“Xinerama”扩展来实现的,这个扩展不需要单独安装,是xorg自带的一个模块
在xorg.conf的man里面,没有提到Clone模式,但是,你以把第二个显示器的像素值和第一个显示器的像素值设置得一样,这样就可以达到Clone的效果。
查询命令 看看《Linux就该这么学》 里面有个专栏是 Linux命令大全(手册
你好,楼主:RandR是对X11的一个扩展协议,允许在不重启X的情况下修改输出的一些参数并使之生效,xrandr是该协议的命令行界面,它的功能之一就是用来设置双屏显示。
缺省情况下,外接显示器後启用的是屏幕复制模式,即两个屏幕显示完全相同的内容。使用命令xrandr -q查看当前的输出状态:
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192 LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm 1280x800 60.0+ 60.0 50.0
1024x768 75.1 70.1 60.0
800x600 72.2 75.0 60.3 56.2
768x576 75.0 72.0 60.0
640x480 72.8 75.0 60.0 59.9
VGA1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 509mm x 286mm 1920x1080 60.0+ 1680x1050 60.0
1280x1024 75.0 60.0
1440x900 59.9
1280x960 60.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 72.8 75.0 66.7 60.0
720x400 70.1
HDMI1 disconnected (normal left inverted right x axis y axis) DP1 disconnected (normal left inverted right x axis y axis) HDMI2 disconnected (normal left inverted right x axis y axis) DP2 disconnected (normal left inverted right x axis y axis) DP3 disconnected (normal left inverted right x axis y axis)
可见,笔记本电脑的屏幕输出(LVDS1)的显示分辨率是1280x800,外接显示器的输出(VGA1)的分辨率是1920x1080。两个输出在整个虚拟屏幕(名称:Screen 0;当前大小:1920x1080;最大:8192x8192)上的坐标都是+0+0。所以在外接显示器中可以看到屏幕左上角有一个1280x800分辨率的小屏幕。
屏幕复制模式最常用於外接投影仪,现在我需要两个屏幕分别显示在各自的显示器中,并在两个屏幕中显示不同的内容(也就是Windows下设置双屏显示时选择的扩展模式)。
由於我将笔记本电脑放在外接显示器的左边,所以为了 *** 作的自然,使用命令xrandr --output VGA1 --right-of LVDS1将外接显示器的输出在虚拟屏幕上的位置设置在笔记本电脑的输出的右边,示意图如下:
这样,两个显示器中就可以显示不同的内容了。由於属於同一个虚拟屏幕,当然也可以将一个窗口跨过边界从一个显示器拖到另一个显示器中。再使用命令xrandr -q查看现在的输出状态:
Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 8192 x 8192 LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm 1280x800 60.0+ 60.0 50.0
1024x768 75.1 70.1 60.0
800x600 72.2 75.0 60.3 56.2
768x576 75.0 72.0 60.0
640x480 72.8 75.0 60.0 59.9
VGA1 connected 1920x1080+1280+0 (normal left inverted right x axis y axis) 509mm x 286mm 1920x1080 60.0+ 1680x1050 60.0
1280x1024 75.0 60.0
1440x900 59.9
1280x960 60.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 72.8 75.0 66.7 60.0
720x400 70.1
HDMI1 disconnected (normal left inverted right x axis y axis) DP1 disconnected (normal left inverted right x axis y axis) HDMI2 disconnected (normal left inverted right x axis y axis) DP2 disconnected (normal left inverted right x axis y axis) DP3 disconnected (normal left inverted right x axis y axis)
使用xrandr做的设置只对当前的X会话有效,重启後恢复原样。使设置持久化的方法为修改xorg.conf或设置自动执行命令。据说有一些图形界面封装的xrandr的前端,完善的桌面环境如GNOME和KDE应该也是可以在图形界面中设置的,不过我所使用的XFCE目前似乎只能启用/禁用复制模式,而不支持在图形界面中设置扩展模式。
下面的脚本用来简化双屏显示的设置:
#!/bin/bash
# Restart trayer and cairo-dock which I use on my desktop
restart_widget()
{
killall trayer
killall cairo-dock
# Another script which starts trayer and set some options
mytrayer
cairo-dock &
}
set_dualhead()
{
xrandr --output LVDS1 --auto
xrandr --output VGA1 --auto
xrandr --output VGA1 --right-of LVDS1
restart_widget
}
set_lvds()
{
xrandr --output VGA1 --off
xrandr --output LVDS1 --auto
restart_widget
}
set_vga()
{
xrandr --output LVDS1 --off
xrandr --output VGA1 --auto
restart_widget
}
if [ $# -eq 0 ]then
set_dualhead
exit
fi
case "$1x" in
"lvdsx") set_lvds
"vgax") set_vga
*) echo 'Unknown parameter !'
esac
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)