1. 程式人生 > >[轉]Linux 配置雙顯示器 (原文名: Ubuntu 8.04/8.10 設定膝上型電腦雙顯示器)

[轉]Linux 配置雙顯示器 (原文名: Ubuntu 8.04/8.10 設定膝上型電腦雙顯示器)

Ubuntu 8.04/8.10 設定膝上型電腦雙顯示器

目錄:
1、設定顯示解析度及 xrandr 介紹
2、GNOME下切換雙屏的方法
3、關於雙屏下 GNOME面板/ wine / 阿里旺旺的一些問題及解決

正文:

1. 設定顯示解析度及 xrandr 介紹

   X Windows 中有一個顯示解析度的概念,在預設情況下,這個顯示解析度為 max*max ,max等於你的所有連線上的顯示器中最大解析度中的最大值。例如我的筆記本液晶屏最大解析度為 1024*768,外接顯示器最大解析度為 1280*1024,則預設的顯示解析度為 1280*1280。如果我設定左右雙屏且使用最大解析度,那麼總顯示解析度就會達到2304*1024,達到超出系統預設的大小。在這種情況下強行設定雙螢幕,就會導致 X 進入超低解析度,結果不得不手工重設 xrog.conf 來恢復。
  為了更好檢測這個問題,我們需要用到 xrandr 這個軟體,xrandr系統已經自帶,如果沒有請安裝x11-xserver-utils:sudo apt-get install x11-xserver-utils 。
  不帶引數執行xrandr能夠列出當前的顯示裝置和每個裝置支援的模式。Screen代表了總顯示區域,VGA代表顯示器,LVDS代表筆記本液晶屏。

Screen 0: minimum 320 x 200, current 1280 x 768, maximum 1280 x 1280

VGA connected (normal left inverted right x axis y axis)
   1280x1024      75.0 +   69.8     59.9  
   1024x768       75.1     70.1     60.0  
   800x600        72.2     75.0     60.3  
   640x480        75.0     72.8     65.4     60.0  
   720x400        70.1  
LVDS connected 1024x768+0+0 (normal left inverted right x axis y axis) 246mm x 184mm
   1024x768       50.0*+   60.0     40.0  
   800x600        60.3  
   640x480        60.0     59.9  

  系統預設顯示解析度為 1280x1280,而在左右擴充套件雙屏情況下VGA和LVDS支援的最小解析度加在一起都超過這個數字,當然會導致 X 進入超低解析度了。如果感興趣,可以用以下命令嘗試把外接顯示器開啟並設定為右側擴充套件螢幕(不用sudo)來驗證一下: xrandr --output VGA --auto --right-of LVDS
系統會出錯,提升說螢幕大小超出限制。

  解決方法:手工修改xorg.conf,在Section "Screen"中新增一行 Virtual 2304 1024

Section "Screen"
   Identifier "Default Screen"
   Monitor "Configured Monitor"
   Device "Configured Video Device"
   SubSection "Display"

      Virtual 2304 1024
   EndSubSection
EndSection

注意:Ubuntu 8.04中的xorg.conf已經非常精簡,Subsection "Display" 可能要自己新增,別忘記 EndSubSection

我設定好以後的xrandr命令輸入如下:
$ xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 2304 x 1024
VGA connected (normal left inverted right x axis y axis)
....
LVDS connected 1024x768+0+0 (normal left inverted right x axis y axis) 246mm x 184mm
....

  現在應該沒問題了,用剛才的命令開啟雙屏後,
$ xrandr
Screen 0: minimum 320 x 200, current 2304 x 1024, maximum 2304 x 1024
VGA connected 1280x1024+1024+0 (normal left inverted right x axis y axis) 340mm x 270mm
...
LVDS connected 1024x768+0+0 (normal left inverted right x axis y axis) 246mm x 184mm
...

  其實這個顯示解析度完全可以設定高一些,比如我就設定成4000 x 2000,如果連線到最大解析度為1920x1200的外接顯示器,也不用重新設定 xorg.conf 了。

  xrandr 命令列可以很方便地切換雙屏,常用方式如下,其他的可以自己探索:
  • xrandr --output VGA --same-as LVDS --auto
    開啟外接顯示器(最高解析度),與筆記本液晶螢幕顯示同樣內容(克隆)
  • xrandr --output VGA --same-as LVDS --mode 1024x768
    開啟外接顯示器(解析度為1024x768),與筆記本液晶螢幕顯示同樣內容(克隆)
  • xrandr --output VGA --right-of LVDS --auto
    開啟外接顯示器(最高解析度),設定為右側擴充套件螢幕
  • xrandr --output VGA --off
    關閉外接顯示器
  • xrandr --output VGA --auto --output LVDS --off
    開啟外接顯示器,同時關閉筆記本液晶螢幕(只用外接顯示器工作)
  • xrandr --output VGA --off --output LVDS --auto
    關閉外接顯示器,同時開啟筆記本液晶螢幕 (只用筆記本液晶屏)
(最後兩種情況請小心操作,不要誤把兩個螢幕都關掉了。。。。)

2. GNOME下切換雙屏的方法


   用命令列畢竟不方便,幸好我們還有許多 X 下的工具可用:
  GNOME 中自帶的“監視器螢幕解析度設定”軟體功能很強大(系統->首選項->螢幕解析度), 開啟和關閉第二個監視器的辦法是調整它的解析度,取消“克隆”就可以設定成擴充套件螢幕,還可以通過拖動圖示位置調整雙屏時兩個螢幕的相對位置。
     
  grandr,則是一個圖形介面的xrandr前端,功能與前一個軟體各有千秋。安裝方法:sudo apt-get install grandr
     
   另外還有兩個可以新增到GNOME面板上的快速切換解析度(但不能切換雙屏)的外掛,分別是 gnome-randr-applet 和 resapplet,如果你需要可以嘗試一下。
   對於 Nvidia顯示卡,據說可以安裝 nvidia-settings (sudo apt-get install nvidia-settings),但我沒試驗過。

3. 關於雙屏下 GNOME面板/ wine / 阿里旺旺的一些問題及解決


   右側擴充套件螢幕時,GNOME面板會自動跑到外接顯示器上去,可以通過拖動把它放回到筆記本液晶屏上來。
    發現一個有趣的現象,用wine執行的程式,似乎只能在最初顯示的那個螢幕上顯示,拖到另外一個螢幕上就無法正常渲染了。
    關於在雙屏情況下使用阿里旺旺5.7,有一個注意事項,啟動擴充套件雙屏後,再啟動阿里旺旺會看不到圖示,在托盤區只看到一個空白的圖示,無法啟動選單,所以最好先啟動阿里旺旺,然後再啟動擴充套件雙屏。(如果已經啟動了雙屏,那麼可以先把雙屏模式變成非擴充套件模式,然後啟動旺旺,再開啟擴充套件模式即可)。命令如下:
xrandr --output VGA --same-as LVDS
啟動旺旺
xrandr --output VGA --right-of LVDS PS by Me:
xrandr 真是個好東西呀!!

順便貼下我的 xorg.conf (ATI X1250)
Section "ServerLayout"
    Identifier     "Default Layout"
    Screen      0  "aticonfig-Screen[0]" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
#    InputDevice "Synaptics" "AlwaysCore"
    InputDevice "USB Mouse" "AlwaysCore"
    Option "AIGLX" "0"
EndSection

Section "ServerFlags"
    Option  "AllowMouseOpenFail" "true"
EndSection

Section "Device"
    Identifier  "ati-x1250"
    Driver  "radeon"

    Option  "AGPFastWrite"        "True"
    Option  "AGPMode" "4"
    Option  "AccelDFS"       "true"
    Option  "AccelMethod"        "EXA"
    Option  "AccelMethod" "exa"
    Option  "ColorTiling" "on"
    Option  "DRI" "on"
    Option  "Dac6Bit"        "True"
    Option  "DynamicClocks"      "on"
    Option  "EnablePageFlip"     "on"
    Option  "FBTexPercent"       "0"
    Option  "MonitorLayout"      "LVDS"
    Option  "XAANoOffscreenPixmaps"  "true"

EndSection

Section "InputDevice"
    Identifier  "USB Mouse"
    Driver  "mouse"
    Option  "Device" "/dev/input/mice"
    Option  "SendCoreEvents" "true"
    Option  "Protocol" "IMPS/2"
    Option  "ZAxisMapping" "4 5"
    Option  "Buttons" "5"
EndSection

Section "InputDevice"
    Identifier  "Synaptics"
    Driver      "synaptics"
    Option      "Protocol" "auto-dev"
    Option      "UpDownScrolling" "on"
    Option      "LeftRightScrolling" "on"
    Option      "LeftEdge" "100"
    Option      "RightEdge" "900"
    Option      "TopEdge" "80"
    Option      "BottomEdge" "680"
    Option      "FingerLow" "25"
    Option      "FingerHigh" "30"
    Option      "MaxTapTime" "1000"
    Option      "MaxTapMove" "220"
    Option      "VertScrollDelta" "100"
    Option      "MinSpeed" "0.6"
    Option      "MaxSpeed" "1"
    Option      "SHMConfig" "on"
    Option      "SHMConfig" "1"
EndSection

Section "DRI"
   Group "video"
    Mode 0666
EndSection

Section "Extensions"
    Option "Composite" "0"
EndSection

Section "Files"
    FontPath "/usr/share/fonts/misc"
    FontPath "/usr/share/fonts/corefonts"
    FontPath "/usr/share/fonts/TTF"
    FontPath "/usr/share/fonts/100dpi"
    FontPath "/usr/share/fonts/75dpi"
    FontPath "/usr/share/fonts/default/ghostscript"
    FontPath "/usr/share/fonts/misc/"
    FontPath "/usr/share/fonts/TTF/"
    FontPath "/usr/share/fonts/OTF"
    FontPath "/usr/share/fonts/Type1/"
    FontPath "/usr/share/fonts/100dpi/"
    FontPath "/usr/share/fonts/75dpi/"
    ModulePath "/usr/lib/xorg/modules"
EndSection

Section "Module"
    Load    "GLcore"
    Load    "bitmap"
    Load    "dbe"
    Load    "ddc"
    Load    "dri"
    Load    "extmod"
    Load    "glx"
    Load    "record"
    Load    "vbe"
    Load  "drm"
EndSection

Section "InputDevice"
    Identifier  "Keyboard0"
    Driver  "kbd"
    Option  "CoreKeyboard"
    Option  "XkbRules" "xorg"
    Option  "XkbModel" "pc105"
    Option  "XkbVariant" ",winkeys"
    Option  "XkbLayout" ""
EndSection

Section "Monitor"
    Identifier   "ASUS-LCD"
    Option      "DPMS" "true"
EndSection

Section "Screen"
    Identifier "aticonfig-Screen[0]"
    Device     "ati-x1250"
    Monitor    "ASUS-LCD"
    DefaultDepth     24
   SubSection "Display"
       Virtual 4000 2000
        Depth   24
        Viewport   0 0
   EndSubSection
EndSection