1. 程式人生 > >Linux下雙屏顯示設定

Linux下雙屏顯示設定

一、適用條件:
用單獨的兩塊顯示卡來實現雙屏顯示,像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系列的雙頭顯示卡中,可以配置到最大化到兩個顯示器。其它的顯示卡不詳。

七、總結:
其實在FreeBSD中,除了不支援的ATI等顯示卡之外,配置雙屏還是比較輕鬆的。bl